[Newbies] String construction and replacement

Randal L. Schwartz merlyn at stonehenge.com
Mon Feb 2 21:12:12 UTC 2009

>>>>> "Claus" == Claus Kick <claus_kick at web.de> writes:

Claus> pattern := 'HI'.
Claus> replacement := 'HELLO'.
Claus> resultString := ''.
Claus> i := 1.
Claus> answer do:[:element | (element = pattern ) ifTrue:[i = 1 ifTrue:[resultString
Claus> := resultString, replacement . i := i + i] ifFalse:[resultString :=
Claus> resultString, ' ', replacement ]] ifFalse:[resultString := resultString, ' ',
Claus> element]].
Claus> ^resultString.

That sort of "build a string by repeated concatenation" scares me.  Might
be ok for very short things, but for longer things, learn to use streams.

For example, look at the implementation of String>>expandMacrosWithArguments:
to see how to use a ReadStream on the source and WriteStream to hold the

Also, if the logic gets to be nested blocks, I try to refactor that
rather quickly.

Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn at stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion

More information about the Beginners mailing list