我有一个字符串,如:'1 3 4 5 7 8'
我如何迭代它以将其拆分为一个字符,以便每个字符都可以执行一个函数?
所以我的代码看起来像这样:
| tempSet1Values tempSet2Values setConcat |
tempSet1Values := '1 2 3'.
tempSet2Values := '4 5 6'.
setConcat := tempSet1Values , ' ' , tempSet2Values
我想将setConcat中的每个数字分开,并将每个数字一次添加到另一个方法。对不起,如果我没有帮助,我是Smalltalk的新手。
答案 0 :(得分:1)
This rosetta code sample looks to do what you are looking for
|array |
array := 'Hello,How,Are,You,Today' subStrings: $,.
array fold: [:concatenation :string | concatenation, '.', string ]
答案 1 :(得分:1)
大多数Smalltalks支持#findTokens:
s上的String
消息:
'1 2 3' findTokens: ' '. "-> anOrderedCollection('1', '2', '3')"
其中参数也可以是字符串中的多个分隔符,如'.,;:'
。
根据方言的不同,#findTokens:
可能 <{1}}而String
只有<{1}}:
Character
另外,您可能希望在连接之前进行拆分:
'1 2 3' findTokens: $ . "note the space" "-> anOrderedCollection('1', '2', '3')
这可以推广为单个输入字符串的数量变大。
答案 2 :(得分:0)
一个明显的可能性就是编写一个循环遍历字符串字符的循环。
|input |
1 to: input size do:
[ :index |
"here `input at: index` is the current character of the string"
]
但是还有更多的可能性。
答案 3 :(得分:0)
'1 3 4 5 7 8'
inject: ''
into: [:str :each |
(each sameAs: Character space)
ifFalse: [
Transcript show: each; cr ]].
一次输出一个字符串。使用成绩单窗口(菜单 - &gt;工具 - &gt;成绩单)进行测试。用您选择的方法替换成绩单调用。