如何在 Swift 中移除字串開頭的所有空格?


在 Swift 中,有多種方法可以移除字串開頭的空格。有一些可用的方法,例如 trimmingCharacters、drop 等。您還可以使用 NSRegularExpression 類來修剪字串中所有開頭的空格。

使用 trimmingCharacters() 方法

trimmingCharacters(in:) 方法是 Swift 的 String 類中的一個內建方法,它允許您從字串中移除開頭和/或結尾的字元。

該方法接受一個引數,該引數是一個 CharacterSet 物件,用於定義要移除的字元集。您可以使用 CharacterSet 類的靜態屬性(例如 whitespaces、whitespacesAndNewlines、decimalDigits 等)來建立 CharacterSet 物件。您還可以使用其初始化器建立一個自定義 CharacterSet 物件,該初始化器接受一個字元字串作為引數。

以下是如何使用 trimmingCharacters(in:) 方法從字串中移除開頭空格的示例

在以下示例中,trimmingCharacters(in:) 方法在 inputString 變數上呼叫,並以 CharacterSet.whitespaces 字元集作為引數。這將移除字串中所有開頭和結尾的空格字元。

示例

import Foundation
let inputString = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
let trimmedString = inputString.trimmingCharacters(in: .whitespaces)
print("Original String: \(inputString)")
print("Trimmed String: \(trimmedString)")

輸出

Original String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Trimmed String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.

使用 drop(while:) 方法

drop(while:) 方法是 Swift 的 String 類中的一個內建方法,它允許您在滿足特定條件時從字串中移除開頭字元。

該方法接受一個閉包作為引數,該閉包應返回一個布林值,指示是否應丟棄給定字元。drop(while:) 方法返回一個新的 Substring 例項,該例項從閉包返回 false 的第一個字元開始。

以下是如何使用 drop(while:) 方法從字串中移除開頭空格的示例

在以下示例中,我們使用 drop(while:) 方法從字串中移除所有開頭的空格字元。

示例

import Foundation
let inputString = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
let trimmedString = inputString.drop(while: { $0.isWhitespace })
print("Original String: \(inputString)")
print("Trimmed String: \(trimmedString)")

輸出

Original String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Trimmed String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.

使用 NSRegularExpression 類進行正則表示式匹配

NSRegularExpression 類是 Swift 中的一個強大工具,它允許您使用正則表示式在字串中查詢和操作模式。

要使用 NSRegularExpression,您首先透過將正則表示式模式作為字串傳遞來建立該類的例項。然後,您可以使用此例項在字串中搜索匹配項或將字串中的模式替換為新值。

示例

import Foundation
let inputString = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
let pattern = "^\s+"
let regex = try! NSRegularExpression(pattern: pattern)
let range = NSRange(location: 0, length: inputString.utf16.count)
let trimmedString = regex.stringByReplacingMatches(in: inputString, options: [], range: range, withTemplate: "")
print("Original String: \(inputString)")
print("Trimmed String: \(trimmedString)")

輸出

Original String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Trimmed String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.

在上面的示例中,我們建立了一個正則表示式模式 "^\s+",它匹配一個或多個開頭的空格字元。然後,我們使用 NSRegularExpression 類建立一個正則表示式物件,並使用 stringByReplacingMatches(in:options:range:withTemplate:) 方法將其應用於輸入字串,以將所有匹配項替換為空字串。

使用 firstIndex(where:) 方法

您還可以使用 firstIndex(where:) 方法在 Swift 中從字串中移除開頭空格。firstIndex(where:) 方法返回集合中第一個滿足給定謂詞的元素的索引。透過對字串使用檢查字元是否為空格的謂詞來使用此方法,您可以找到第一個非空格字元的索引

示例

import Foundation
let inputString = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
if let index = inputString.firstIndex(where: { char in !char.isWhitespace }) {
   let trimmedString = String(inputString[index...])
   print("Original String: \(inputString)")
   print("Trimmed String: \(trimmedString)")
}

輸出

Original String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Trimmed String: Lorem Ipsum is simply dummy text of the printing and typesetting industry.

在此示例中,firstIndex(where:) 方法在 inputString 變數上呼叫,並使用一個閉包,該閉包使用 isWhitespace 屬性檢查每個字元是否不是空格字元。firstIndex(where:) 方法返回第一個非空格字元的索引,如果不存在非空格字元則返回 nil。此處使用 ?? 運算子在 firstIndex(where:) 返回 nil 時提供一個預設值 inputString.endIndex(即字串的末尾)。

結論

總之,在 Swift 中,您可以採取多種方法來移除字串開頭的空格。

一種方法是使用 String 類的 trimmingCharacters(in:) 方法,該方法會移除字串開頭和結尾的空格字元。

您還可以使用 String 類的 drop(while:) 方法,在給定謂詞為真時移除字串開頭的元素。

此外,您可以使用 String 類的 firstIndex(where:) 方法查詢字串中第一個非空格字元的索引,然後使用 suffix(from:) 方法建立一個從該索引開始的新字串。

最後,您還可以使用 Foundation 框架中的 NSRegularExpression 類來使用正則表示式在字串中查詢和操作模式。

每種方法都有其自身的優缺點,具體取決於程式碼的特定需求。

更新於: 2023年5月4日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.