使用正則表示式列印每個單詞首字母的Swift程式


在Swift中,正則表示式被稱為正則表示式。它用於建立一個模式,有助於匹配或提取給定字串的特定部分。我們可以藉助正則表示式字面量或字串來建立一個正則表示式例項。在本文中,我們將使用正則表示式來列印每個單詞的首字母。

示例

Input: String = "Ram got first place"
Output: "Rgfp "

此處,輸出字串包含給定字串中每個單詞的首字母。

在以下示例中,我們將使用以下方法:

matches(in:options:range) 方法 - 此方法用於獲取一個數組,其中包含正則表示式的所有匹配項。

語法

func matches(in:str, options:option, range:Range)

此函式採用三個引數:

  • str - 輸入字串。

  • option - 表示要使用的匹配選項。

  • Range - 字串執行搜尋的有效範圍。

enumerateMatches(in:options:range:using:) 方法 - 此方法允許一個塊來處理每個正則表示式匹配。

語法

func enumerateMatches(in:str, options:option, range:Range, using:code)

此函式採用四個引數:

  • str - 輸入字串。

  • option - 匹配選項。

  • Range - 要測試的字串的有效範圍。

  • code - 它列舉正則表示式的匹配項。

演算法

  • 步驟1 - 建立一個函式,該函式將輸入字串作為引數。

  • 步驟2 - 現在此函式設定正則表示式。

  • 步驟3 - 然後它使用 matches() 函式對給定字串執行模式匹配。此函式採用兩個引數:要匹配的字串以及在其中執行匹配的字串範圍。

  • 步驟4 - 透過使用 map() 函式迭代“matchRes”,提取每個字元的首字母。對於每個匹配項,從給定字串中提取相應的子字串,並將每個子字串的首字母儲存在陣列中。

  • 步驟5 - 使用 joined() 函式連線陣列的所有元素後,列印最終結果。

  • 步驟6 - 建立一個字串。

  • 步驟7 - 呼叫函式並將字串作為引數傳遞給它。

示例1

在下面的 Swift 程式中,我們將使用正則表示式列印每個單詞的首字母。因此,我們定義一個函式,該函式接受一個輸入字串並提取字串中每個單詞的首字母。此函式有一個變數,該變數儲存正則表示式“\b\w”,其中“\b”表示單詞邊界,它確保匹配發生在每個單詞的開頭,“\w”表示一個字元 (A-Z, a-z, 0-9)。然後它使用 NSRegularExpression 初始化匹配模式。然後它使用 matches() 函式匹配字串,並使用 map() 函式提取每個單詞的首字母,並在連線字串中所有單詞的首字母后列印最終結果。

import Foundation
import Glibc
func displayFirstLetter(mStr: String) {
   let mpattern = "\\b\\w"
   let regex = try! NSRegularExpression(pattern: mpattern)

   let matchRes = regex.matches(in: mStr, range:
   NSRange(mStr.startIndex..., in: mStr))
   let firstLetters = matchRes.map { match in
      String(mStr[Range(match.range, in: mStr)!])
   }
   print("First letters are:", firstLetters.joined())
}
let OriginalString = "Ronit play golf Very Well"
print("Original String:", OriginalString)
displayFirstLetter(mStr: OriginalString)

輸出

Original String: Ronit play golf Very Well
First letters are: RpgVW

示例2

在下面的 Swift 程式中,我們將使用正則表示式列印每個單詞的首字母。因此,我們定義一個函式,該函式接受一個輸入字串並提取字串中每個單詞的首字母。此函式有一個變數,該變數儲存正則表示式“\b\w”,其中“\b”表示單詞邊界,它確保匹配發生在每個單詞的開頭,“\w”表示一個字元 (A-Z, a-z, 0-9)。然後它建立一個 NSRegularExpression 例項。然後我們使用 enumerateMatches(in:options:range:using:) 方法迭代正則表示式在輸入字串中找到的匹配項。最後顯示給定字串中所有單詞的首字母。

import Foundation
let inputStr = "Mona visits charminar"
let regexPattern = "\\b\\w"
if let regex = try? NSRegularExpression(pattern:
regexPattern, options: []) {
   regex.enumerateMatches(in: inputStr, options: [], range: 
   NSRange(inputStr.startIndex..., in: inputStr)) { (match, _, _) in
      if let range = match?.range(at: 0), let lRange = Range(range, in: inputStr) {
         let fLetter = inputStr[lRange]
         print("First Letters are:", fLetter)
      }
   }
}

輸出

First Letters are: M
First Letters are: v
First Letters are: c

結論

這就是我們如何使用正則表示式列印每個單詞的首字母。正則表示式非常強大,因為它允許我們非常輕鬆地在多個檔案中執行復雜的搜尋。它們可用於模式匹配、字串替換、提取子字串等。

更新於:2023年6月14日

165 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告