在 Swift 字符串中查找字符的索引

swiftserver side programmingprogramming

在 iOS 应用开发中,查找字符串中字符的索引很常见。根据给定的索引,您可以执行不同的操作。在本文中,您将看到一些如何使用以下函数获取字符索引的示例 -

  • firstIndex(of:)

  • firstIndex(where:)

  • range(of:)

在不同的用例中,上述所有方法都可以在字符串值上执行。

使用 FirstIndex() 方法

在 Swift 中,您可以使用 firstIndex(of:) 方法在字符串中查找字符的索引。这是一个例子 −

示例

let inputString = "The quick brown fox jumps over the lazy dog"
let target: Character = "q"
if let index = inputString.firstIndex(of: target) {
    let distance = inputString.distance(from: inputString.startIndex, to: index)
    print("输入字符串:\(inputString)")
    print("'\(target)' 的索引为:\(distance)")
} else {
    print("未找到字符")
}

输出

输入字符串:The quick brown fox jumps over the lazy dog
'q' 的索引为:4

上述代码通过 firstIndex(of:) 方法定义了一个名为 inputString 的输入字符串和字符"q"首次出现的目标字符。如果找到该字符,该方法将返回一个可选的索引值。该值被解包并用于使用 distance(from:to:) 方法计算从字符串开头到检索到的索引的距离。如果未找到该字符,代码将输出一条消息说明这一点。

使用 FirstIndex(where:) 方法

此方法允许您搜索与给定条件匹配的字符,而不是特定字符。这是一个例子 −

示例

let inputString = "The quick brown fox jumps over the lazy dog"
let target: String = "b"
if let index = inputString.firstIndex(where: { $0.isLetter && $0.lowercased() == target }) {
    let distance = inputString.distance(from: inputString.startIndex, to: index)
    print("输入字符串:\(inputString)")
    print("'\(target)' 的索引为:\(distance)")
} else {
    print("未找到字符")
}

输出

输入字符串:The quick brown fox jumps over the lazy dog
'b' 的索引为:10

在上面的例子中,我们使用 firstIndex(where:) 方法在输入字符串中查找目标小写字母"b"。此方法采用闭包来提供检查用例的条件并返回布尔值。如果返回 true,您将获得闭包中传递的字符的索引,否则返回 nil。这就是为什么我们在这里使用可选绑定 (if-let) 以安全的方式获取索引的原因。

获取索引值后,我们使用 distance(from:to:) 方法获取输入字符串中字符的最终索引。

使用 Range(of:) 方法

此方法允许您查找字符串中子字符串的范围。这是一个例子。

示例

let inputString = "敏捷的棕色狐狸跳过了懒狗"
let target: String = "quick"
if let range = inputString.range(of: target) {
    let beginningIndex = inputString.distance(from: inputString.startIndex, to: range.lowerBound)
    let endingIndex = inputString.distance(from: inputString.startIndex, to: range.upperBound)
    print("输入字符串:\(inputString)")
    print("'\(target)' 的起始索引为:\(startingIndex)")
    print("'\(target)' 的结束索引为:\(endingIndex)")
} else {
    print("未找到字符")
}

输出

输入字符串:The quick brown fox jumps over the lazy dog
"quick"的起始索引为:4
"quick"的结束索引为:9

在前面的代码中,我们使用 range(of:) 方法找出输入字符串中子字符串"quick"的范围。该方法返回一个可选的范围值。该值被展开,并通过 distance(from:to:) 方法用于计算从字符串开头到范围下限和上限的距离。如果未找到子字符串,代码将输出一条消息说明。

结论

在 Swift 中,有几种方法可用于查找字符串中字符的索引,其中包括,我们使用了以下方法 -

  • firstIndex(of:)

  • firstIndex(where:)

  • range(of:)

所有上述方法均可用于获取输入字符串中字符的索引。很多时候,我们需要在 iOS 应用程序中获取字符索引以执行某些操作。这些方法可用于不同的用例。

在本文中,您了解了获取索引的每种方法和这些用例。所有方法都返回可选值作为输出,我们可以使用可选绑定安全地获取索引。


相关文章