[squeak-dev] self subStrings:'||'
Ron Teitelbaum
ron at usmedrec.com
Thu Oct 24 17:25:41 UTC 2019
You could use my methods that never get accepted. I use them all the time!
Collection >> explode: aDelimiter
"explode the collection into a collection of collections broken by
aDelimiter"
"(#(#(1 2) #(3 4)) mergeDelimited: Character tab ) explode: Character
tab = an OrderedCollection(#(1 2) #(3 4))
'abcdef' explode: 'cd' = an OrderedCollection('ab' 'ef')"
| resultCollection starting aDelimiterPosition aDelimiterSize |
self ifEmpty: [^self].
resultCollection := OrderedCollection new.
aDelimiterSize := aDelimiter isCollection ifTrue: [aDelimiter size]
ifFalse: [1].
starting := 1.
[aDelimiterPosition := aDelimiter isCollection ifTrue: [self
indexOfSubCollection: aDelimiter startingAt: starting] ifFalse: [self
indexOf: aDelimiter startingAt: starting ifAbsent: [0]].
aDelimiterPosition > 0] whileTrue: [
resultCollection add: (self copyFrom: starting to:
aDelimiterPosition - 1).
starting := aDelimiterPosition + aDelimiterSize.
].
resultCollection add: (self copyFrom: starting to: self size).
^resultCollection
Collection >> mergeDelimited: anObject
"return to receiver a collection with each element concatenated to
remove embedded collections"
"#(#(1 2) #(3 4)) mergeDelimited: Character tab = #(1 2 Character tab
3 4), #('ab' 'cd') mergeDelimited: Character cr = 'ab
cd' "
| returnCollection aSeperator |
self ifEmpty: [^self].
aSeperator := anObject isCollection ifTrue: [anObject] ifFalse: [Array
with: anObject].
returnCollection := self first species new.
self copy from: 1 to: self size -1 do: [:a |
a ifNotNil: [
returnCollection := returnCollection, a, aSeperator
].
].
^returnCollection, self last
' Middle-left-cell || style="width: 14em;" | Middle-center-cell ||
Middle-right-cell' explode: $|
an OrderedCollection(
' Middle-left-cell '
''
' style="width: 14em;" '
' Middle-center-cell '
''
' Middle-right-cell')
All the best,
Ron Teitelbaum
On Thu, Oct 24, 2019 at 11:38 AM gettimothy via Squeak-dev <
squeak-dev at lists.squeakfoundation.org> wrote:
> Hi all.
>
> ' Middle-left-cell || style="width: 14em;" | Middle-center-cell ||
> Middle-right-cell' self subStrings:'|'
> ' Middle-left-cell || style="width: 14em;" | Middle-center-cell ||
> Middle-right-cell' self subStrings:'||'
>
> inspect both, they are identical.
>
> Is this expected behavior?
>
> Looking at the method:
>
> char := sourceStream next.
>
>
> is the "problem" in that a match is had for the single pipe character.
>
> Is there a better way to split that string along double pipes '||' ?
>
> thank you in advance.
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191024/6fd366a6/attachment.html>
More information about the Squeak-dev
mailing list
|