我正在尝试完成这些教程: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: $
].
但这只是在每个单词的第一个字母上删除。有什么建议吗?
答案 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.
...