Arrays 如何查找字符串数组中出现的字符串?

Arrays 如何查找字符串数组中出现的字符串?,arrays,swift,string,Arrays,Swift,String,为了提供一些上下文,我正在构建一个应用程序,它基本上显示了我根据一些JSON进行的一系列计算。例如,我在JSON中找到了圣经,想知道一个名字在章节文本中出现了多少次 以下是其中一本书的JSON: 我有一系列的圣经名字,我在每一章的每一节中搜索一本给定的圣经书,找到每个名字出现的次数。(注:我还没有输入男性圣经名字) var name=[String]() 让名称字符串为“” 阿比盖尔 艾达 亚莱 天使 安娜 亚腓亚 阿塔拉 亚他利雅 芭丝谢芭 辟拉 坎迪斯 克洛伊 克劳迪娅 达马里斯 黛博拉 黛

为了提供一些上下文,我正在构建一个应用程序,它基本上显示了我根据一些JSON进行的一系列计算。例如,我在JSON中找到了圣经,想知道一个名字在章节文本中出现了多少次

以下是其中一本书的JSON:

我有一系列的圣经名字,我在每一章的每一节中搜索一本给定的圣经书,找到每个名字出现的次数。(注:我还没有输入男性圣经名字)

var name=[String]()
让名称字符串为“”
阿比盖尔
艾达
亚莱
天使
安娜
亚腓亚
阿塔拉
亚他利雅
芭丝谢芭
辟拉
坎迪斯
克洛伊
克劳迪娅
达马里斯
黛博拉
黛利拉
戴安娜
黛娜
伊丽莎白
以斯帖
尤妮斯
前夕
夏甲
汉娜
胡尔达
杰迪达
耶洗别
乔安娜
朱迪思
朱莉娅
利亚
露易丝
莉迪亚
玛莎
玛丽
米迦雅
密迦
米里亚姆
拿拉
内奥米
奥普拉
菲比
普里西拉
雷切尔
丽贝卡
露丝
莎乐美
蓝宝石
撒莱
谢拉
苏珊娜
塔比莎
添马舰
提尔莎
瓦什蒂
齐帕
"""
names=nameString.components(以“\n”分隔)
func getData(){
书名中的书{
如果让url=url(字符串):https://raw.githubusercontent.com/aruljohn/Bible-kjv/master/\(book.json){
如果let data=try?数据(contentsOf:url){
如果让jsonData=try?JSONDecoder().decode(Book.self,from:data){
圣经[书]=jsonData
}
}
}
}
}
func searchNames(verseText:String,uname:String)->Int{
让数组=verseText.components(分隔符:“”)
让nameCount=array.filter{$0==name}.count
返回姓名计数
}
getData()
//名人
var dict=字典()
圣经中的章节[书名[0]!。章节{
第章的诗句{
名副其实{
dict[name]=搜索名称(verse.text,name)
}
}
}
打印(dict)
为什么我打印时每个名字都说0?
我哪里出错了?当然,getData()功能正确,并且实际返回带有
verse.text的文本,但它不会计算名称。

Sulthan已经告诉您问题所在。您需要从名称中删除空格:

let cleanedName = name.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
dict[cleanedName] = searchNames(verse.text, cleanedName)

看起来您的一些代码丢失了。其中定义了
书名
圣经
。麻生太郎,你是在故事板上写的吗?而且您是否尝试过调试以打印任何中间值?并且您提供的链接返回404.:-)我想这个问题需要一些更新。我会先整理一下
名称
。我敢肯定,它们在开始时包含一些空格。即使去掉了名称,名称仍然无法填充。还有与应用程序的链接
let cleanedName = name.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
dict[cleanedName] = searchNames(verse.text, cleanedName)