java - 如何分隔以 "$"分隔的 java 字符串?

标签 java groovy spock

我正在使用spock来测试java应用程序。似乎“$”是groovy中的特殊字符。任何用“$”分隔的java字符串都无法在groovy中正确分隔。这个问题有什么解决方法吗?

更新

“分割”发生在我无法编辑的java代码中。事实证明,java代码有一个相同的问题:Why can't I split a string with the dollar sign?

最佳答案

我不认为 $ 是 Groovy 字符串中的特殊字符。 编辑:是的,它是,如果您使用 GStrings !但其余的可能仍然有用: 但它是您赋予 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:

Example:

'testing$one$two$three'.tokenize('$').each {
    println it
}

(相同的输出)

关于java - 如何分隔以 "$"分隔的 java 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823866/

相关文章:

java - 使 GWT 可抓取 (SEO)

java - RxJava插入并返回Id方法(房间)调试

groovy - Spock框架: what is the purpose of Spies vs.使用真实对象还是模拟?

java - Spock模拟调用模拟类的真实方法

unit-testing - 使用 Spock 和 Grails 在全局 stub 类中注入(inject) stub 协作者

java - 用于简单 Servlet 应用程序的 Maven 原型(prototype)

java - String.replaceAll(regex) 进行两次相同的替换

hibernate - 我在 grails 中遇到完整性违规异常。如何级联删除到grails中的相关实体?

java - 通过 XPath 将任意 XML 字符串插入 XML 文档的代码

web-services - 用groovy创建一个 Restful Web服务,该服务在GET请求中从数据库返回值