我正在使用spock来测试一个java应用程序。似乎“$”是groovy中的一个特殊字符。由“$”分隔的任何java字符串都无法在groovy中正确分离。这个问题的解决方法是什么?
“拆分”发生在我无法编辑的java代码中。事实证明,java代码存在与Why can't I split a string with the dollar sign?
相同的问题答案 0 :(得分:1)
我不认为 编辑:是的,如果你使用GStrings就是这样!但其余的可能仍然有用:但它是你给$
是Groovy字符串中的特殊字符。String#split
的字符串中的一个特殊字符,因为该字符串被解释为正则表达式,并且在正则表达式中$
是“输入结束”(或行尾,取决于标志)。
如果您正在使用String#split
,要将其拆分为文字$
,则必须使用反斜杠对其进行转义。要使正则表达式引擎看到反斜杠,您必须使用另一个反斜杠转义字符串文字中的反斜杠。
'testing$one$two$three'.split('\\$').each {
println it
}
输出:
testing one two three
更好的是,suggested为Dónal,使用tokenize
:
'testing$one$two$three'.tokenize('$').each {
println it
}
(相同输出)