斯卡拉。如何使用scala计算第一个数组的数组数

斯卡拉。如何使用scala计算第一个数组的数组数,scala,Scala,我有一个以*分隔的单词和以~分隔的行的文件,我想计算特定单词在文件中出现的次数 例如 输入文件: AB*xyz*1234~ CD*mny*769~ MN*bvd*2345~ AB*zar*987~ 代码: 用于(第行) countby包含带有第一个元素的函数,并使用选项处理无我为您的案例制作了一个小函数: def count(term:String,file:File): Int = { Source.fromFile(file, "UTF-8").getLines().foldRig

我有一个以*分隔的单词和以~分隔的行的文件,我想计算特定单词在文件中出现的次数

例如

输入文件:

AB*xyz*1234~
CD*mny*769~
MN*bvd*2345~
AB*zar*987~
代码:

用于(第行)

count
by
包含带有第一个元素的
函数,并使用
选项
处理

我为您的案例制作了一个小函数:

def count(term:String,file:File): Int = {
    Source.fromFile(file, "UTF-8").getLines().foldRight(0)((line, count) => {
        count + line.split("\\*").filter(_.contentEquals(term)).length
    })
}

println(count("AB",PATH_TO_INPUT)) // result is 2
所有行将检查是否有定界符,将单词列表过滤到术语中,并将剩余单词的长度添加到当前计数值中

帮助我理解折叠方法

我希望这能回答你的问题

问题是,AB这个词出现了多少次。你能帮助我如何从数组中获得特定单词的计数吗

您可以使用
Source
api读取文件,然后将分隔的单词存储在列表中

您可以通过调用计数函数计算每个单词的重复次数,如下所示


我希望答案是有帮助的

谢谢你的回复!!这样我可以从所有匹配的行中获得计数。但是我只需要所有行中的第一个词。如果我只需要匹配所有行中的第二个词,我应该使用什么帮助,例如:
arr.lift(1)。exists(u.contains(“AB”))
感谢回复结果为真false false我只需要获得计数您应该结合
计数
如我的答案。
arr.map(_.split("\\*")).count(i => i.headOption.exists(_.contains("AB")))
def count(term:String,file:File): Int = {
    Source.fromFile(file, "UTF-8").getLines().foldRight(0)((line, count) => {
        count + line.split("\\*").filter(_.contentEquals(term)).length
    })
}

println(count("AB",PATH_TO_INPUT)) // result is 2
val resultArray = Source.fromFile(filename).getLines().flatMap(line => line.replace("~", "").split("\\*")).toList
println(resultArray.count(_ == "AB"))   //will print 2
println(resultArray.count(_ == "CD"))   //will print 1
println(resultArray.count(_ == "xyz"))  //will print 1