首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个字符串中找到字符串?

在另一个字符串中找到字符串?
EN

Stack Overflow用户
提问于 2018-10-27 20:00:08
回答 2查看 62关注 0票数 0

我有一个NSTextField,它包含用户Mac的硬件ID。

我还拥有一个登录按钮,如果NSTextField的NSViewController与从URL中提取的字符串匹配,该按钮应该会转到另一个.stringValue中。

下面是我想要描绘的代码。

代码语言:javascript
复制
if let url = URL(string: "URL HERE")
            {
                do
                {
                    let contents = try String(contentsOf: url)

                    print(contents)

                    if contents.contains(serialTextField.stringValue)
                    {
                        print("exists")

                        //SEGUE
                    }

打印时的内容类似于(例如,3个单独的mac硬件ids );

代码语言:javascript
复制
1j2k9j5g8j7b
4n5k5s9db31d
p9d4v8s2z81d

我遇到的问题是,如果我只是在NSTextField中输入(例如)数字"1“,那么当我按下登录按钮时,它就表示它存在,它不应该只匹配一个匹配的硬件id。

如何将正确的硬件id与内容匹配,而不匹配单个数字或字母或错误的硬件标识。

当在内容中搜索4n5k5s9db31d时,我如何说有匹配。

任何帮助都是非常感谢的,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-27 20:23:08

我做了下面的工作,把内容分解成一行。

代码语言:javascript
复制
if let url = URL(string: "URL HERE")
            {
                do
                {
                    let contents = try String(contentsOf: url)

                    let components = contents.components(separatedBy: CharacterSet.newlines)

                    for component in components
                    {
                        print(component)

                        if component == serialTextField.stringValue
                        {
                            print("found")
                        }
                    }
票数 0
EN

Stack Overflow用户

发布于 2018-10-27 20:19:55

我认为这里的问题是,较大的“contents”字符串将检查它是否包含较小的serialTextField.stringValue,这不是您想要的。您希望检查两个硬件ID是否相同。

也许您可以尝试将“内容”拆分为三个不同的字符串,这样您就有了如下所示的字符串数组:

代码语言:javascript
复制
let contentsArray = ["1j2k9j5g8j7b","4n5k5s9db31d","p9d4v8s2z81d"]

现在您就可以像这样使用contains了:

代码语言:javascript
复制
if contentsArray.contains(serialTextField.stringValue) { 
    print("exists") 
    //segue
}

下面是Xcode文档中关于在字符串数组中使用Xcode()方法的示例:

代码语言:javascript
复制
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
    print(cast.contains("Marlon"))
    // Prints "true"
    print(cast.contains("James"))
    // Prints "false"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53025790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档