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


在 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("Input string: \(inputString)")
   print("Index of '\(target)' is: \(distance)")
} else {
   print("Character not found")
}

输出

Input string: The quick brown fox jumps over the lazy dog
Index of 'q' is: 4

前面的代码定义了一个名为 inputString 的输入字符串和一个目标字符,用于通过 firstIndex(of:) 方法查找字符 "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("Input string: \(inputString)")
   print("Index of '\(target)' is: \(distance)")
} else {
   print("Character not found")
}

输出

Input string: The quick brown fox jumps over the lazy dog
Index of 'b' is: 10

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

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

使用 Range(of:) 方法

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

示例

let inputString = "The quick brown fox jumps over the lazy dog"
let target: String = "quick"
if let range = inputString.range(of: target) {
   let startingIndex = inputString.distance(from: inputString.startIndex, to: range.lowerBound)
   let endingIndex = inputString.distance(from: inputString.startIndex, to: range.upperBound)
   print("Input string: \(inputString)")
   print("Starting index of '\(target)' is: \(startingIndex)")
   print("Ending index of '\(target)' is: \(endingIndex)")
} else {
   print("Character not found")
}

输出

Input string: The quick brown fox jumps over the lazy dog
Starting index of 'quick' is: 4
Ending index of 'quick' is: 9

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

结论

在 Swift 中,您可以使用多种方法查找字符串中某个字符的索引,包括我们使用的以下方法:

  • firstIndex(of:)

  • firstIndex(where:)

  • range(of:)

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

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

更新于: 2023年4月4日

3K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告