gpt4 book ai didi

swift 3 获取子字符串的起始索引(作为 int)

转载 作者:IT王子 更新时间:2023-10-29 05:19:00 27 4
gpt4 key购买 nike

我想获取字符串中子字符串的开始和结束位置。示例:在字符串“hi this is my name”中;如果我提供字符串“this”,我想知道开始索引是 4,结束索引是 7。

我找到了几个链接,包括这个:

Swift: get index of start of a substring in a string字符串中的子字符串

但它在 swift 3 中不起作用,因为该方法现在称为范围。

我现在正在使用这个:

let range = mystring.range(of: "StringSearch")?.lowerBound

返回这个

Swift.String.UnicodeScalarView.Index(_position: 15), _countUTF16: 1))

而且我无法获得整数位置,因为这是一个索引。

总而言之,我希望在一个 int 类型的变量中包含位置,在本例中为 15。

谁能帮帮我?

谢谢大家

最佳答案

distance(from:to:) String 的方法计算差异在两个 String.Index 值之间:

let mystring = "hi this is my name"
if let range = mystring.range(of: "this") {
let startPos = mystring.distance(from: mystring.startIndex, to: range.lowerBound)
let endPos = mystring.distance(from: mystring.startIndex, to: range.upperBound)
print(startPos, endPos) // 3 7
}

实际上它只是将调用转发给字符串的 CharacterView,所以以上给出了与

相同的结果
let mystring = "hi this is my name"
if let range = mystring.range(of: "this") {
let startPos = mystring.characters.distance(from: mystring.characters.startIndex, to: range.lowerBound)
let endPos = mystring.characters.distance(from: mystring.characters.startIndex, to: range.upperBound)
print(startPos, endPos) // 3 7
}

如果您需要字符串的所有 次出现:

let mystring = "this is this and that is that"
var searchPosition = mystring.startIndex
while let range = mystring.range(of: "this", range: searchPosition..<mystring.endIndex) {
let startPos = mystring.distance(from: mystring.startIndex, to: range.lowerBound)
let endPos = mystring.distance(from: mystring.startIndex, to: range.upperBound)
print(startPos, endPos)

searchPosition = range.upperBound
}

关于swift 3 获取子字符串的起始索引(作为 int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40070544/

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