String 如何在Scala中获取字符串中字符的索引?

String 如何在Scala中获取字符串中字符的索引?,string,scala,char,String,Scala,Char,如果我有一个字符串,我在该字符串中循环,查看每个字符,如何获取该字符串中该字符的索引 我见过人们使用indexOf,但是当我看到他们使用它时,它只返回该字符第一次出现的索引。但是,如果同一个字符多次出现,该怎么办?如何获取当前查看的角色的索引 我开始使用: for(c <- str) 单独查看每个字符 嗯。。。有一些方法可以帮你做到这一点,但假设没有这样的方法。。。即使这样,您也可以通过使用入门级编程来实现这一点 val string: String = "my awesome str

如果我有一个字符串,我在该字符串中循环,查看每个字符,如何获取该字符串中该字符的索引

我见过人们使用indexOf,但是当我看到他们使用它时,它只返回该字符第一次出现的索引。但是,如果同一个字符多次出现,该怎么办?如何获取当前查看的角色的索引

我开始使用:

for(c <- str)

单独查看每个字符

嗯。。。有一些方法可以帮你做到这一点,但假设没有这样的方法。。。即使这样,您也可以通过使用入门级编程来实现这一点

val string: String  = "my awesome string"

val char: Char = 'e'
现在,最基本的解决方案

var index = 0
val indexListBuffer: ListBuffer[Int] = ListBuffer()

for (c <- string) {
  if (c == char) {
    indexListBuffer.append(index)
  }
  index = index + 1
}

println(indexListBuffer)

不太清楚为什么需要获取当前迭代的字符的索引,因为因为您正在迭代,您已经知道索引是什么,您所要做的就是保持计数。例如,类似这样的内容:

val str=你好,世界 对于c,我← str.zipWithIndex printlns$c为$i //H是0 //e在1 //我在两点钟 //我三点了 //o在4点 //他五点起床 //W在6点 //o在7点 //r在8点 //我在9点 //d在10点 您可以将zipWithIndex与筛选器一起使用来搜索索引

val str = "12334563"
str.toList.zipWithIndex.filter((x) => x._1 == '3') 
res9: List[(Char, Int)] = List(('3', 2), ('3', 3), ('3', 7))
如果需要,您还可以删除toList调用