首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Swift 4:字符串数组中的元素在字符串中发生了多少次?

Swift 4:字符串数组中的元素在字符串中发生了多少次?
EN

Stack Overflow用户
提问于 2019-10-19 14:58:59
回答 1查看 89关注 0票数 1

现在,我正在做一个小项目,用圣经按书显示各种各样的事实和数据。

我有真正的圣经经文和章节文本,从JSON远程解码。

问题是,我正在尝试添加一个功能,其中显示了书中提到最多的名字。我这里有一串男女圣经的名字。

如何计算字符串数组中元素在单个字符串中出现的次数?

有什么方法可以让我的字符串数组中的元素出现在另一个字符串数组中的次数呢?

代码语言:javascript
代码运行次数:0
运行
复制
let nameString = """
        Abigail
        Ada
        Ahlai
        Angel
        Anna
"""

let names = nameString.components(separatedBy: "\n")

for chapter in genesis!.chapters{
            for verse in chapter.verses{
                //????????????????
            }
        }

我试图通过我的JSON对象循环,它有字典等等。

这首诗是一本字典,像“1”:“上帝说.”

是否有一种方法可以检查名称中任何元素在verses.values中出现多少次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-19 15:38:49

您可以使用字符串的components(separatedBy:)实例方法从接收方获得一个包含子串的数组,该数组已被给定的分隔符分割。从结果数组的计数中,可以获得给定字符串中分隔符的出现情况。在您的情况下,由于您需要获取名称数组中每个元素的出现情况,您的代码最终会出现如下所示。

代码语言:javascript
代码运行次数:0
运行
复制
var namesOccurences: [String:Int] = [:]
for chapter in genesis!.chapters{
    for verse in chapter.verses{
        for verse in verses {
            for name in names {
                let occurences = verse.value.components(separatedBy: name).count - 1
                namesOccurences[name] = namesOccurences[name, default: 0] + occurences
            }
        }
    }
}

上面的方法还会找到名称也是子字符串的单词。如果你不想把它计算在内,你可以把诗句分成几个字,然后循环起来找出出现的情况。示例代码将类似于下面的代码。

代码语言:javascript
代码运行次数:0
运行
复制
var namesOccurences: [String:Int] = [:]
for chapter in genesis!.chapters{
    for verse in chapter.verses{
        for verse in verses {
            let words = verse.split(separator: " ")
            for name in names {
                var occurences = 0
                words.forEach { (subString) in
                   if subString.caseInsensitiveCompare(name) == .orderedSame {
                      occurences += 1
                   }
                }
                namesOccurences[name] = namesOccurences[name, default: 0] + occurences
            }
        }
    }
}

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58464939

复制
相关文章

相似问题

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