如何使用 String.substringWithRange?(或者,Swift 中的 Range 如何工作?)
您可以使用兩種語法(..< 或 ...)指定範圍運算子。這兩種語法用於不同的目的。作為第一種語法的部分,範圍的起始值和結束值都包含在內。相反,第二種語法包括起始值以及可選的結束值。
例如,您想指定從數字 1 到 4 的範圍。您可以這樣定義它:範圍運算子的 1..<5 語法。類似地,要指定從 1 到 5 的範圍,您可以建立一個類似於範圍運算子的 1...5 語法的範圍。這兩種語法都可以在 for-in 迴圈中用於迭代。
Swift 中有哪些型別的範圍運算子?
Swift 中有兩種型別的範圍運算子:
閉合範圍運算子 (...) - 此運算子定義一個包含第一個值和最後一個值的範圍。例如,1...5 定義了一個從 1 到 5(包括 1 和 5)的整數範圍。
半開範圍運算子 (..<) - 此運算子定義一個包含第一個值但不包含最後一個值的範圍。例如,1..<5 定義了一個從 1 到 4 的整數範圍。
如果整數、浮點數和字串符合 Comparable 協議,則可以使用這兩種運算子。
示例
let closedRange = 1...5 let halfOpenRange = 1..<5 let strClosedRange = "a"..."e" let strHalfOpenRange = "a"..<"e"
這兩種型別的範圍也可以以各種方式使用,例如在 for 迴圈中、訪問陣列中的元素、檢查值是否在特定範圍內等等。
Swift 中的範圍如何工作?
在 Swift 中,範圍使用範圍運算子(..< 或 ...)定義,並指定一個值的範圍。範圍運算子 ..< 定義一個包含第一個值但排除最後一個值的範圍,而範圍運算子 ... 包含第一個值和最後一個值。
例如,1..<5 定義了一個從 1 到 4 的整數範圍,而 1...5 定義了一個從 1 到 5 的整數範圍。
範圍可以在 Swift 中以各種方式使用
在 for 迴圈中
範圍運算子非常常用於 for 迴圈。範圍運算子為 for 迴圈提供了迭代元素的靈活性。
示例
import Foundation for element in 1...5 { print("Element: \(element)") }
輸出
Element: 1 Element: 2 Element: 3 Element: 4 Element: 5
訪問陣列中的元素
範圍運算子可用於訪問陣列或其他集合中的元素組。
示例
import Foundation let languages: [String] = ["PHP", "Java", "Swift", "Python", "JavaScript", "GoLang"] let subarray = languages[1..<3] print("Original array: \(languages)") print("Subarray: \(subarray)")
輸出
Original array: ["PHP", "Java", "Swift", "Python", "JavaScript", "GoLang"] Subarray: ["Java", "Swift"]
使用範圍迭代陣列
這是範圍運算子最常見的用途,可以輕鬆迭代陣列。
示例
import Foundation let languages: [String] = ["PHP", "Java", "Swift", "Python", "JavaScript", "GoLang"] for index in 0..<languages.count { print("Element: \(languages[index])") }
輸出
Element: PHP Element: Java Element: Swift Element: Python Element: JavaScript Element: GoLang
使用範圍檢查值是否在特定範圍內
您可以檢查值是否存在於某個範圍內。範圍運算子使此檢查變得容易。
示例
import Foundation let number = 25 if (10..<30).contains(number) { print("\(number) is within the range of 10 to 30") }
輸出
25 is within the range of 10 to 30
使用範圍檢查值是否在 switch case 的範圍內
switch 語句在 Swift 語言中非常強大。您可以在 Switch 的 case 中使用範圍運算子。
示例
import Foundation let score = 85 switch score { case 0..<50: print("You failed") case 50..<70: print("You passed") case 70...100: print("You got an A") default: print("Invalid score") }
輸出
You got an A
將範圍與 stride(from:to:by:) 函式一起使用
您可以在 stride() 函式中提供一個範圍,以提供起始值和結束值以及增量計數。
示例
import Foundation for i in stride(from: 0, to: 10, by: 2) { print(i) }
輸出
0 2 4 6 8
如何使用 String.substringWithRange?
在 Swift 5 中,我們不再能夠訪問 substring() 方法,因為它們已棄用。我們將討論所有替代方案並詳細瞭解它們。
substring(with:) 方法已更新為 String[startIndex..<endIndex] 或 String[startIndex...] 或 String[..<endIndex](在 Swift 4.2 及更高版本中),用於使用範圍從字串中提取子字串。以下是用這種新語法編寫的示例:
示例
import Foundation let sampleString = "Hello World!" let index = sampleString.index(sampleString.startIndex, offsetBy: 5) let substring = sampleString[..<index] print("Original string: \(sampleString)") print("Substring: \(substring)")
輸出
Original string: Hello World! Substring: Hello
結論
在 Swift 中,範圍用於建立值的範圍,並且它可以具有各種應用。閉合範圍運算子和半開範圍運算子是兩種不同型別的範圍運算子。範圍可用於 switch 語句、for 迴圈、stride(from:to:by:) 函式、訪問陣列中的元素、確定值是否落在給定範圍內以及許多其他情況下。