在 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 應用程式中獲取字元的索引以執行某些操作。這些方法可以在不同的用例中使用。
在本文中,您瞭解了每種方法及其用例以獲取索引。所有方法都返回可選值作為輸出,我們可以使用可選繫結安全地獲取索引。