鉴于任何字符串,如'Lorem ipsum dolor sit amet,consectetuer adipiscing elit',我想在坐下之前丢弃每个单词.我已经检查过String中的方法但是找不到这个方法非常有用.这是我的尝试:
| phrase newPhrase |
phrase := 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit'.
newPhrase := phrase substrings.
phrase substrings do: [: word | word = 'sit' ifFalse: [ newPhrase := newPhrase allButFirst ] ifTrue: [ ^ nil ] ].
newPhrase joinUsing: String space
Run Code Online (Sandbox Code Playgroud)
在工作区中进行评估时,它会回答为零,但是必须有一个聪明的方法吗?
代码:
phrase substrings do: [: word | word = 'sit' ifFalse: [ ... ] ifTrue: [ ^ nil ] ].
Run Code Online (Sandbox Code Playgroud)
找到单词sit时返回nil.
请注意,Smalltalk 中的^始终从封闭方法返回.它不会打破的do:.
试试这个
在坐下之前丢弃所有单词:
words := phrase substrings.
newPhrase := words allButFirst: (words indexOf: 'sit') - 1
Run Code Online (Sandbox Code Playgroud)
您可能还会发现这些收集方法很有趣:
words copyAfter: 'sit' "all words after sit"
words copyUpTo: 'sit' "all words before sit"
words copyUpThrough: 'sit' "words before and including sit"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |