Smalltalk nextAlphaNumericWord是否存在于3.0中?
我正在努力完成以下教程: 但我无法让某些方法发挥作用(例如nextAlphaNumericWord)。2.0/3.0中是否存在这样或类似的内容Smalltalk nextAlphaNumericWord是否存在于3.0中?,smalltalk,Smalltalk,我正在努力完成以下教程: 但我无法让某些方法发挥作用(例如nextAlphaNumericWord)。2.0/3.0中是否存在这样或类似的内容 我这一点做得不错: [ tmpStream atEnd ] whileFalse: [ myStream nextPutAll: (tmpStream nextDelimited: Character space); nextPut: $ ]. 这不包括以下情况:“一、二、三、四”(空格) 我也试过: |tmpStream| myStream
我这一点做得不错:
[ tmpStream atEnd ] whileFalse: [ myStream nextPutAll: (tmpStream nextDelimited: Character space); nextPut: $ ].
这不包括以下情况:“一、二、三、四”(空格)
我也试过:
|tmpStream|
myStream := ReadWriteStream on: String new.
tmpStream := ReadStream on: inString.
[ tmpStream atEnd ] whileFalse: [ tmpStream next == $
ifFalse: [ myStream nextPutAll:
(tmpStream nextDelimited: $ );
nextPut: $
].
但这只是删掉了每个单词的第一个字母。有什么建议吗?你真的需要那种旧的Smalltalk/X版本吗?当前的Smalltalk/X版本是6.2.X,在PeakableStream和ReadStream类中包含#nextAlphaNumericWord方法。
但是,我强烈建议您升级到最新的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.
...
你真的需要旧的Smalltalk/X版本吗?当前的Smalltalk/X版本是6.2.X,在PeakableStream和ReadStream类中包含#nextAlphaNumericWord方法。
但是,我强烈建议您升级到最新的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.
...
我在我原来的帖子上加了一条评论。请让我知道你的想法,我已经在我原来的帖子中添加了一条评论。请让我知道您的想法如果您有不同的分隔符,只需使用所有分隔符构建一个集合,并在筛选时使用#includes:进行测试。也可以使用字符空间
而不是$
,因为在识别语法和语义空间时会遇到很多问题。并检查=和==之间的差异,因为此处不需要标识。如果有不同的分隔符,只需使用所有分隔符构建一个集合,并在筛选时使用#includes:进行测试。也可以使用字符空间
而不是$
,因为在识别语法和语义空间时会遇到很多问题。并检查=和==之间的差异,因为这里不需要标识。