Pharo 9 Smalltalk中按起止位置截取字符串子串的方法查询
Pharo 9 字符串截取子串方法
Pharo 9 的 String 类原生支持单消息实现按起止位置截取子串,你之前尝试的方法名有误,正确的方法是 copyFrom:to:。
方法说明
copyFrom: 起始索引 to: 结束索引:传入1-based的起止位置,直接返回对应区间的子串,Smalltalk中所有序列类型的索引默认都从1开始计数。- 如果需要按「起始位置+长度」的逻辑截取,直接通过起始位置推导结束位置即可:结束索引 = 起始索引 + 长度 - 1。
示例代码
对应你给出的'abcdefg'截取'cde'的需求:
str := 'abcdefg'. "直接传入起止位置3到5,返回'cde'" str copyFrom: 3 to: 5. "如果按起始位置+长度的逻辑实现,从第3位开始取3个字符" start := 3. length := 3. str copyFrom: start to: start + length - 1.
补充说明
你之前使用的allButFirst:和allButLast:组合也能实现需求,但copyFrom:to:更适合灵活指定任意起止区间的场景,性能也和两步操作没有明显差异。
内容的提问来源于stack exchange,提问作者cts
相关产品推荐
相关产品推荐

