我有一个文件,单词用*分隔,行用〜分隔,我想计算具体单词在文件中出现的次数。
例如。
输入文件:
AB*xyz*1234~
CD*mny*769~
MN*bvd*2345~
AB*zar*987~
代码:
for (line <- bufferedSource.getLines()) {
array = line.split("\\~")
for (row <- array ){
val splittedRow=row.split("\\*")
val cnt = splittedRow(0).contains("AB").count()
这里我面临的问题是,AB这个词有多少次出现。你能帮我解决一下如何从数组中获取特定单词的数量。我无法使用关键字.count。
请帮帮我。
答案 0 :(得分:1)
我为你的案子做了一个小功能:
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
所有行都会检查是否有分隔符,过滤单词列表到术语,并将剩余单词的长度添加到当前计数值。
this帮助我理解折叠方法
我希望能回答你的问题
答案 1 :(得分:0)
arr.map(_.split("\\*")).count(i => i.headOption.exists(_.contains("AB")))
<{1}} count
函数与第一个元素并使用contains
来处理Option
。
答案 2 :(得分:0)
问题在于,单词AB存在多少次。你能帮我解决一下如何从数组中获取特定单词的数量
您可以使用Source
api阅读该文件,然后将分隔的单词存储在列表中。
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
我希望答案很有帮助