如何使用 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 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告