Re: [Newbies] Splitting strings

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [Newbies] Splitting strings

Nicolas Cellier-3

I see at least two alternatives:
- Stream
- VBRegex

If you have a single separator string, then Stream already has the upToAll: method (leave stream positioned before occurence...)

| testString sep subStrings inputStream |
testString := 'split that string in this language'.
sep := 'th'.
subStrings := Array new writeStream.
inputStream := testString readStream.
[inputStream atEnd]
        whileFalse: [
                subStrings nextPut: (inputStream upToAll: sep).
                inputStream throughAll: sep].
^subStrings contents

VBRegex is more powerfull of course (it can match several different separators at once).
I let you inquire about it.

Nicolas

Damien Pollet:

> Hi,
>
> is there anything like ruby's String#split in Smalltalk? (split the
> string at string occurences or regexp matches)
>
> I found SequenceableCollection#piecesCutWhere: or String#findTokens
> but I need to split at occurences of a substring. I must also admit my
> problem is with VW... I did try in the method finder in Squeak, but
> without much success.
>
> --
>  Damien Pollet
>  type less, do more
> _______________________________________________
> Beginners mailing list
> [hidden email]
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>

________________________________________________________________________
iFRANCE, exprimez-vous !
http://web.ifrance.com


Reply | Threaded
Open this post in threaded view
|

Re: [Newbies] Splitting strings

Philippe Marschall
What's with #splitOn: , #subStrings:  and #findBetweenSubStrs: except
that they don't support regex and have all more or less the same
responsibility?

Philippe

2006/7/26, ncellier @ ifrance. com <[hidden email]>:

>
> I see at least two alternatives:
> - Stream
> - VBRegex
>
> If you have a single separator string, then Stream already has the upToAll: method (leave stream positioned before occurence...)
>
> | testString sep subStrings inputStream |
> testString := 'split that string in this language'.
> sep := 'th'.
> subStrings := Array new writeStream.
> inputStream := testString readStream.
> [inputStream atEnd]
>         whileFalse: [
>                 subStrings nextPut: (inputStream upToAll: sep).
>                 inputStream throughAll: sep].
> ^subStrings contents
>
> VBRegex is more powerfull of course (it can match several different separators at once).
> I let you inquire about it.
>
> Nicolas
>
> Damien Pollet:
> > Hi,
> >
> > is there anything like ruby's String#split in Smalltalk? (split the
> > string at string occurences or regexp matches)
> >
> > I found SequenceableCollection#piecesCutWhere: or String#findTokens
> > but I need to split at occurences of a substring. I must also admit my
> > problem is with VW... I did try in the method finder in Squeak, but
> > without much success.
> >
> > --
> >  Damien Pollet
> >  type less, do more
> > _______________________________________________
> > Beginners mailing list
> > [hidden email]
> > http://lists.squeakfoundation.org/mailman/listinfo/beginners
> >
>
>
> ________________________________________________________________________
> iFRANCE, exprimez-vous !
> http://web.ifrance.com
>
>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [Newbies] Splitting strings

Nicolas Cellier-3
In reply to this post by Nicolas Cellier-3
Hi,

this thread was in [hidden email]
accidentally i replied to squeak-dev.

So i forwarded your answer on beginners list.

Thanks


Philippe Marschall:
> What's with #splitOn: , #subStrings:  and #findBetweenSubStrs: except
> that they don't support regex and have all more or less the same
> responsibility?
>
> Philippe
>


________________________________________________________________________
iFRANCE, exprimez-vous !
http://web.ifrance.com