nextAlphaNumericWord是否存在于3.0中?

时间:2013-06-18 01:03:19

标签: smalltalk

我正在尝试完成这些教程:http://live.exept.de/doc/online/english/overview/basicClasses/streams.html

但是我无法使用某些方法(例如,nextAlphaNumericWord)。这个或类似的东西是否存在于2.0 / 3.0中?


我有点工作得很好:

[ tmpStream atEnd ] whileFalse: [ myStream nextPutAll: (tmpStream nextDelimited: Character space); nextPut: $ ].

这不包括以下情况:'one _ _ _ two _ _ three _ four _ _ '(空格)

我也试过了:

    |tmpStream|
myStream := ReadWriteStream on: String new.
tmpStream := ReadStream on: inString.

[ tmpStream atEnd ] whileFalse: [ tmpStream next == $
                                    ifFalse: [ myStream nextPutAll: 
                                        (tmpStream nextDelimited: $ ); 
                                        nextPut: $
                                    ].

但这只是在每个单词的第一个字母上删除。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

你真的需要那个旧的Smalltalk / X版本吗?当前的Smalltalk / X版本是6.2.x并且包含PeekableStream和ReadStream类中的#neAlAlphaNumericWord方法。 但是,我强烈建议您升级到最新的Smalltalk / X版本,以便享受更好的功能。

如果您移植到Pharo 2.0或3.0,那么您有多个选项来实现该方法,但是接近本教程的方法是:

|string stream word1 word2 num1 num2 num3|

string := 'one two 12345 567.678'.
stream := string readStream.

word1 := stream nextDelimited: Character space.
stream skipSeparators.
word2  := stream upToAnyOf: Character separators.
num1   := Number readFrom: stream.
...