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表示序列的长度。