gpt4 book ai didi

oop - 从 smalltalk (squeak) 中的字符串中提取子字符串

转载 作者:行者123 更新时间:2023-12-04 14:27:10 24 4
gpt4 key购买 nike

我试图从一个字符串中提取一个子字符串,这将是 2 个分隔符之间的子字符串
即它应该定义如下:

substring: aString delimiter: aDelimiter

并且,例如,如果我会得到这一行:
substring: 'dddd#sss#dddd' delimiter: '#'

该函数应返回“sss”。

这是我一直在尝试的,但没有用:
substring: aString delimiter: aDelimiter
|index temp1 temp2 sz arr str|
arr := aString asArray.
sz := arr size.
index := arr lastIndexOf: aDelimiter.
temp1 := arr first: (sz - index +1).
index := temp1 lastIndexOf: aDelimiter.
sz :=temp1 size.
temp2 := temp1 first: (sz - index).
str := temp2 asString.
^str.

我不知道是否值得一提,但它应该是一个类方法。

最佳答案

您的基本问题是参数 aDelimiter 是字符串而不是字符。你想用 $# 而不是 '#' 来调用它。

现在介绍一些更简单的方法。可能最简单的方法是使用 subStrings: 方法:

('dddd#sss#dddd' subStrings: '#') at: 2

这样做的缺点是它将整个字符串提取为由 # 字符分隔的子字符串,这可能超出您的需要。

下一个最简单的选择是使用流:
'dddd#sss#dddd' readStream upTo: $#; upTo: $#

该代码仅提取您需要的部分。

关于oop - 从 smalltalk (squeak) 中的字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com