Scala-计算字符串中的特定字符数(以函数样式)

Scala-计算字符串中的特定字符数(以函数样式),scala,functional-programming,Scala,Functional Programming,我可以用下面的代码计算特定的字符串 var count = 0 for (i <- "HelloWorldHHHH") { if (i == 'H') { count = count + 1 } println(count) 有人能帮我用纯函数的方式写同样的功能吗 我尝试了下面的方法,但不确定哪里出了问题 val count1 = "Hello".foldLeft(0)((x,_) match { case k if(k == 'h') => x +1}) 最后一个代码有一

我可以用下面的代码计算特定的字符串

 var count = 0
for (i <- "HelloWorldHHHH") {
if (i == 'H') {
  count = count + 1
}
println(count)
有人能帮我用纯函数的方式写同样的功能吗

我尝试了下面的方法,但不确定哪里出了问题

val count1 = "Hello".foldLeft(0)((x,_) match { case k if(k == 'h') => x +1})

最后一个代码有一些错误,是否有人可以帮助我修复错误或给出正确的解决方案

您可以删除if,只需在case块中插入您的字符

"Hello".foldLeft(0) {(acc,c) => c match {
    case 'l' => acc + 1
    case _ => acc
  }
}

您可以删除if,只需在case块中插入您的角色

"Hello".foldLeft(0) {(acc,c) => c match {
    case 'l' => acc + 1
    case _ => acc
  }
}
“helloworldhhh”.count(=='H')
已经是纯函数式的,而且它看起来是我的首选选项,因为它非常简短且可读

更多选择:

折叠

"HelloWorldHHHH".foldLeft(0){case(count, char) => if (char == 'H') count + 1 else count }
"HelloWorldHHHH".collect{ case 'H' => 1 }.sum
为理解起见,在a之后求和。请注意,您可以使用防护装置(如果有):

“helloworldhhh”.count(=='H')
已经是纯函数式的,而且它看起来是我的首选选项,因为它非常简短且可读

更多选择:

折叠

"HelloWorldHHHH".foldLeft(0){case(count, char) => if (char == 'H') count + 1 else count }
"HelloWorldHHHH".collect{ case 'H' => 1 }.sum
为理解起见,在a之后求和。请注意,您可以使用防护装置(如果有):


如果您确实希望在生产代码中执行此操作,我建议使用stdlib
count
方法:

"HelloWorldHHHH".count(_ == 'H')
为了便于学习,您可以使用
foldLeft

"HelloWorldHHHH".foldLeft(0) { case (sum, char) =>
  if (char == 'H') sum + 1 else sum
}

如果您确实希望在生产代码中执行此操作,我建议使用stdlib
count
方法:

"HelloWorldHHHH".count(_ == 'H')
为了便于学习,您可以使用
foldLeft

"HelloWorldHHHH".foldLeft(0) { case (sum, char) =>
  if (char == 'H') sum + 1 else sum
}

将其更改为
val count1=“Hello”.foldLeft(0){case(acc,char)=>if(char='l')acc+1 else acc}
谢谢。。我明白,我做错了什么。将其更改为
val count1=“Hello”。foldLeft(0){case(acc,char)=>if(char='l')acc+1 else acc}
谢谢。。我明白我做错了什么谢谢你GabrielEthak你Gabriel