吱吱叫的Smalltalk中的拆分功能
split function in squeak Smalltalk
我目前正在使用 squeak-Smalltalk 进行练习。
我想拆分一个字符串,它的行为有点像 Java 或 python 中的拆分函数,但在互联网上几乎找不到任何东西。有什么建议吗?我该如何实施?
谢谢!
很遗憾没有,squeak中好像没有split
或splitBy:
消息(不像Pharo...)所以我自己实现了这样的方法。
split: aSentence
|count str strArr |
str := aSentence.
count := ((aSentence select: [:a | a = $ ])) size.
strArr := OrderedCollection new.
[count >= 0]
whileTrue: [
strArr add: (str copyFrom: 1 to: (str indexOf: $ ifAbsent: [str size + 1]) - 1).
str := str copyFrom: ((str indexOf: $ ) + 1) to: (str size).
count := count - 1.
].
^strArr
我发现协议浏览器对回答这个问题最有帮助。以下是您可以尝试的一些选择器:
'foo, bar, baz' splitBy: ','. "#('foo' ' bar' ' baz')"
'foo, bar, baz' splitBy: ', '. "#('foo' 'bar' 'baz')"
'foo, bar, baz' findTokens: ', '. "an OrderedCollection('foo' 'bar' 'baz')"
但请注意,虽然 #splitBy:[Do:]
将参数解释为单个分隔符序列,但 #findTokens:
将其用作一组单个字符分隔符:
'foo bar, baz' splitBy: ', '. #('foo bar' ' baz')
'foo bar, baz' findTokens: ', '. an OrderedCollection('foo' 'bar' 'baz')
希望这对您有所帮助。享受你的 Squeak!
SequenceableCollection >> splitBy:
至少从 2010 年 2 月开始就存在于 Squeak 图像中:
('1920x1080' splitBy: 'x') = #('1920' '1080')
我目前正在使用 squeak-Smalltalk 进行练习。 我想拆分一个字符串,它的行为有点像 Java 或 python 中的拆分函数,但在互联网上几乎找不到任何东西。有什么建议吗?我该如何实施?
谢谢!
很遗憾没有,squeak中好像没有split
或splitBy:
消息(不像Pharo...)所以我自己实现了这样的方法。
split: aSentence
|count str strArr |
str := aSentence.
count := ((aSentence select: [:a | a = $ ])) size.
strArr := OrderedCollection new.
[count >= 0]
whileTrue: [
strArr add: (str copyFrom: 1 to: (str indexOf: $ ifAbsent: [str size + 1]) - 1).
str := str copyFrom: ((str indexOf: $ ) + 1) to: (str size).
count := count - 1.
].
^strArr
我发现协议浏览器对回答这个问题最有帮助。以下是您可以尝试的一些选择器:
'foo, bar, baz' splitBy: ','. "#('foo' ' bar' ' baz')"
'foo, bar, baz' splitBy: ', '. "#('foo' 'bar' 'baz')"
'foo, bar, baz' findTokens: ', '. "an OrderedCollection('foo' 'bar' 'baz')"
但请注意,虽然 #splitBy:[Do:]
将参数解释为单个分隔符序列,但 #findTokens:
将其用作一组单个字符分隔符:
'foo bar, baz' splitBy: ', '. #('foo bar' ' baz')
'foo bar, baz' findTokens: ', '. an OrderedCollection('foo' 'bar' 'baz')
希望这对您有所帮助。享受你的 Squeak!
SequenceableCollection >> splitBy:
至少从 2010 年 2 月开始就存在于 Squeak 图像中:
('1920x1080' splitBy: 'x') = #('1920' '1080')