当前位置: 首页 > 面试题库 >

Swift 3字符串包含确切的句子/单词

计光赫
2023-03-14
问题内容

我想知道一种简单的算法来确定字符串是否包含准确的句子或单词。

我不是在寻找:

string.contains(anotherString)

原因如下:

let string = "I know your name"
string.contains("you") // Will return true

在上面的示例中,它返回true,因为如果"you"在单词中找到了"your"。我想要一个在这种情况下将返回false的方法。

例如:

let string = "I am learning Swift"

// Let's say we make a method using extension called contains(exact:)
string.contains(exact: "learn") // return false

该方法contains(exact:)将返回false,因为"learn"它不等于"learning"

另一个例子:

let string = "Healthy low carb diets"
string.contains(exact: "low carb diet") // return false

在Swift 3中获得该结果的算法是什么?还是为此有预定义的方法?


问题答案:

解决方案是能够检查单词边界的正则表达式。

这是一个简单的String扩展,该模式搜索包装在单词边界(\b)中的查询字符串

extension String {
    func contains(word : String) -> Bool
    {
        do {
            let regex = try NSRegularExpression(pattern: "\\b\(word)\\b")
            return regex.numberOfMatches(in: self, range: NSRange(word.startIndex..., in: word)) > 0
        } catch {
            return false
        }
    }
}

或者–感谢Sulthan –更简单

extension String {
    func contains(word : String) -> Bool
    {
        return self.range(of: "\\b\(word)\\b", options: .regularExpression) != nil
    }
}

用法:

let string = "I know your name"
string.contains(word:"your") // true
string.contains(word:"you") // false


 类似资料:
  • 问题内容: 例如: 字符串s =“ this是a.line是.over” 应该出来 “这是行结束。” 我想到两次使用字符串标记器 现在我不确定如何使用字符串标记器的输出作为另一个的输入? 我也可以使用split方法生成数组我尝试过的东西 问题答案: 使用StringBuilder,无需拆分和创建其他字符串,依此类推,请参见代码

  • 问题内容: 通过这个代码,我试图取代确切的词用。但是,如果运行此命令,它将仅在我希望打印时打印,这与包含它的单词不同。我怎样才能解决这个问题?谢谢 问题答案: 使用带有单词边界 的正则表达式: 边界符号的反斜杠必须转义,因此为双反斜杠。

  • 问题内容: 在MySQL中,使用LIKE非常普遍。我们使用它是这样的:。我们有一个子字符串,而字段有完整的字符串。但是我需要的是相反的东西。我在字段中有子字符串。因此,我希望该行包含我的字符串的子字符串。假设表是: 而且我有一个来自用户的字符串:。我需要返回这样的MySQL查询,因为这是用户字符串的子字符串。就像是: 提前致谢。 问题答案: 您在寻找LIKE运算子 模式匹配使用SQL简单的正则表达

  • 问题内容: 我正在尝试从文本中提取所有包含指定单词的句子。 但它正在回报我: 代替 : 有什么帮助吗? 问题答案:

  • 问题内容: 考虑到与类似值的字符串列,什么是查询所有的最佳方法 ,其中包括给定数量的记录 (例如)? 我脑海中的解决方案是: 但由于前导,因此AFAIK该查询无法在列上使用索引。 必须有更好的东西。它是什么? 使用PostgreSQL,但 更希望 该解决方案也适用于其他DB。 问题答案: 在PostgreSQL 9.1中,您可以利用该模块并用它构建一个GIN索引。 您的表达式即使没有左锚也可以使用

  • 问题内容: 我在寻找Python中的方法。 我想要做: 问题答案: 你可以使用in运算符: