首页 > 解决方案 > 让包含与多个单词一起工作

问题描述

我正在搜索并希望它能够防错。

假设我们有 3 个字符串:containsText其中包含我要查找的 2 个单词fullTextShortfullTextLong

我的 funccontains可以使用fullTextShort,因为我正在寻找的单词紧随其后,但它不适fullTextLong用于两者之间的世界。

如何让函数在两种情况下都返回 true?

struct ContainsFuncView: View {
    let fullTextShort = "I like pineapple"
    let fullTextLong = "I like green pineapple"
    let containsText = "like pineapple"

    var body: some View {
        VStack {
            contains(type: "Short")
            contains(type: "Long")
            }
    }
    
    func contains(type: String) -> Text {
        var containsInFullText: Bool = false
        
        if type == "Short" {
            containsInFullText = fullTextShort.localizedStandardContains(containsText)
        }
        
        else if type == "Long" {
            containsInFullText = fullTextLong.localizedStandardContains(containsText)
        }

        return Text("\(containsInFullText ? "Contains" : "Doesn't contain") in fullText\(type)").foregroundColor(containsInFullText ? .green : .red)
    }
}

谢谢!

标签: swiftswiftui

解决方案


containsText在空间分裂。然后测试文本中是否有任何或所有单词:

containsInFullText = containsText.components(separatedBy: " ").contains { fullTextShort.localizedStandardContains($0) }


containsInFullText = containsText.components(separatedBy: " ").allSatisfy { fullTextShort.localizedStandardContains($0) }

推荐阅读