在 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+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告