我正在使用spock来测试java应用程序。似乎“$”是groovy中的特殊字符。任何用“$”分隔的java字符串都无法在groovy中正确分隔。这个问题有什么解决方法吗?
更新
“分割”发生在我无法编辑的java代码中。事实证明,java代码有一个相同的问题:Why can't I split a string with the dollar sign?
最佳答案
我不认为 编辑:是的,它是,如果您使用 GStrings !但其余的可能仍然有用: 但它是您赋予 $
是 Groovy 字符串中的特殊字符。String#split
的字符串中的一个特殊字符。 ,因为该字符串被解释为正则表达式,并且在正则表达式中,$
是“输入结束”(或行结束,具体取决于标志)。
如果您使用String#split
,要使其在文字$
上拆分,您必须使用反斜杠对其进行转义。要使正则表达式引擎看到反斜杠,您必须使用另一个反斜杠转义字符串文字中的反斜杠。
Example :
'testing$one$two$three'.split('\\$').each {
println it
}
输出:
testing one two three
Better yet, as suggested by Dónal, use tokenize
:
'testing$one$two$three'.tokenize('$').each {
println it
}
(相同的输出)
关于java - 如何分隔以 "$"分隔的 java 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823866/