如何使用 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:) 函数、访问数组中的元素、确定值是否落在给定范围内以及许多其他情况下。