gpt4 book ai didi

arrays - swift 4 : How many times an element from a String array occurs in a String?

转载 作者:行者123 更新时间:2023-11-28 07:20:11 24 4
gpt4 key购买 nike

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

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

问题是我正在尝试添加一个功能,它按书籍显示提及次数最多的名字。我这里有一个由男性和女性圣经名字组成的字符串数组。

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

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

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":"And God said..."]

有没有办法检查 names 中的任何元素在 verses.values 中出现了多少次?

最佳答案

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

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
}
}
}
}

上述方法也会找到名称是其子串的单词。如果您不想计算它,您可以将这节经文拆分成单词,然后循环遍历它们以查找出现的次数。示例代码如下所示。

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
}
}
}
}

希望对您有所帮助。

关于arrays - swift 4 : How many times an element from a String array occurs in a String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com