我有这种奇怪的情况 - 当我将正则表达式组打印到控制台时,它们会显示出来。当我将这个迭代器转换为数组时 - 它是空的。以下代码不打印任何内容:
val str = "buy--751-rates.data"
val expr = "--(.+)-rates.data".r
val target = Array[String]()
expr.findAllIn(str).matchData map(m => m group 1) copyToArray(target, 0, 4)
target foreach { println }
但是这个片段有效:
val str = "buy--751-rates.data"
val expr = "--(.+)-rates.data".r
println("Scala matches:")
expr.findAllIn(str).matchData foreach {
m => println(m group 1)
}
我想我错过了一些简单的事情
答案 0 :(得分:2)
你没有得到任何东西,因为你正在复制到零长度数组。你实际上并不需要这样做,因为在迭代器上有一个toArray方法,它将它转换为数组,并且你可以根据需要获得头部值。例如:
(expr.findAllIn(str).matchData).map(m => m group 1).toArray.head