Swift 程序检查字符串是否包含指定子字符串
在 Swift 中,子字符串是存在于长字符串中的一小段字符序列,例如,"Car color is blue",则"Car"、"color"、"is"和"blue"是给定字符串的子字符串。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! 找到子字符串!")
} else {
print("NO! 未找到子字符串!")
}
输出:
YES! 找到子字符串!
方法 2:使用 contains() 方法
我们还可以使用 contains() 方法检查指定字符串是否包含子字符串。此函数返回一个布尔值,表示给定的子字符串是否存在于指定字符串中。
示例
在下面的 Swift 程序中,我们将检查字符串是否包含指定的子字符串。为此,我们创建一个字符串和要搜索的子字符串。然后,我们对原始字符串调用 contains(substring) 方法,并将子字符串作为参数传递,并显示输出。
import Foundation
import Glibc
let OriginalString = "Roma likes box"
let subString = "box"
if OriginalString.contains(subString) == true
{
print("是!找到子字符串!")
} else {
print("否!未找到子字符串!")
}
输出
是!找到子字符串!
方法 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" // 正则表达式模式 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 表示序列的长度。