Elegant way to remove the last part of a string?

ε祈祈猫儿з 提交于 2019-12-05 05:40:37
'OneTwoThree' readStream upToAll: 'Three'

I usually use #copyReplaceAll:with: method, if the last string is not repeated elsewhere in the original string of course:

'OneTwoThree' copyReplaceAll: 'Three' with: ''

In the Moose project, there should be a method #removeSuffix: that removes a given suffix, if present.

If you need everything after only the last occurence removed:

|original cutOut lastEnd currentEnd modified|

original := 'OneTwoThree'.
cutOut := 'Three'.
lastEnd := 0.
[currentEnd := lastEnd.
lastEnd := original indexOf: cutOut startingAt: lastEnd +1.
lastEnd = 0 ] whileFalse.

modified := currentStart > 0 ifTrue: [original first: currentEnd] ifFalse: [original copy]

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!