Swift程式檢查字串是否包含指定子字串


在Swift中,子字串是較長字串中的一小段字元序列,例如,“汽車顏色是藍色”,那麼“汽車”、“顏色”、“是”和“藍色”都是給定字串的子字串。Swift提供以下方法來檢查字串是否包含指定的子字串:

  • 使用range(of:)方法

  • 使用contains()方法

  • 使用正則表示式

方法1:使用range(of:)方法

range(of:)方法用於查詢給定子字串在字串中第一次出現的範圍。因此,使用此方法,我們可以檢查給定子字串是否存在於字串中。

示例

在下面的Swift程式中,我們將檢查字串是否包含指定的子字串。為此,我們建立一個字串和我們想要搜尋的子字串。然後,我們在原始字串上呼叫range(of:substring)方法,並將子字串作為引數傳遞給它,並顯示輸出。

import Foundation
import Glibc

let OriginalString = "Sky is pink"
let subString = "is"

if OriginalString.range(of: subString) != nil
{
   print("YES! Substring is found!")
} else {
   print("NO! Substring is not found!")
}

輸出

YES! Substring is found!

方法2:使用contains()方法

我們還可以使用contains()方法檢查指定的字串是否包含子字串。此函式返回一個布林值,表示給定的子字串是否存在於指定的字串中。

示例

在下面的Swift程式中,我們將檢查字串是否包含指定的子字串。為此,我們建立一個字串和我們想要搜尋的子字串。然後,我們在原始字串上呼叫contains(substring)方法,並將子字串作為引數傳遞給它,並顯示輸出。

import Foundation
import Glibc

let OriginalString = "Roma likes box"
let subString = "box"

if OriginalString.contains(subString) == true
{
   print("YES! Substring is found!")
} else {
   print("NO! Substring is not found!")
}

輸出

YES! Substring is found!

方法3:使用正則表示式

我們還可以使用正則表示式來檢查指定的字串是否包含子字串。

示例

在下面的Swift程式中,我們將使用正則表示式來檢查字串是否包含指定的子字串。為此,我們建立一個字串和我們想要搜尋的子字串。然後,我們定義模式“\b\(subString)\b”,其中\b是邊界字元,它確保匹配是針對完整的給定單詞進行的,\(subString)將子字串的值插入到模式中。然後,建立NSRegularExpression的例項來儲存正則表示式模式。然後,我們將建立一個“rangeValue”變數來儲存我們要搜尋的主字串的範圍。之後,我們使用regexPattern.firstMatch(in:option:range)方法呼叫正則表示式物件,在給定範圍內查詢輸入字串中模式的第一個匹配項。如果找到匹配項,則它返回一個值,表示找到了給定的子字串。否則返回字串未找到。

import Foundation
import Glibc
let inputString = "How to write a string program?"
let subString = "string"

// Regex pattern
let patternMatch = "\\b\(subString)\\b"
let regexPattern = try! NSRegularExpression(pattern:
patternMatch, options: .caseInsensitive)
let rangeValue = NSRange(location: 0, length:
inputString.utf16.count)
if regexPattern.firstMatch(in: inputString, options:
[], range: rangeValue) != nil {
   print("\"\(subString)\" found in the given string")
} else {
   print("\"\(subString)\" does not found in the given string")
} 

輸出

"string" found in the given string

結論

這就是我們如何檢查字串是否包含指定的子字串。所有方法都返回準確的結果。因此,您可以根據您的需求或選擇使用任何方法。contains()方法的時間複雜度為O(n),其中n表示序列的長度。

更新於:2023年6月14日

1K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.