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+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告