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

更新于: 2023年2月28日

741 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告