我试图执行类似的分割如下:的Groovy/Java的劈在括号字符串 “(”
println "Hello World(1)".split("W");
输出:
[Hello , orld(1)]
我想执行这一分裂:
println "Hello World(1)".split("(");
但是我看到:
有没有办法可以避免这个括号?任何帮助表示赞赏。
我试图执行类似的分割如下:的Groovy/Java的劈在括号字符串 “(”
println "Hello World(1)".split("W");
输出:
[Hello , orld(1)]
我想执行这一分裂:
println "Hello World(1)".split("(");
但是我看到:
有没有办法可以避免这个括号?任何帮助表示赞赏。
println "Hello World(1)".split("\\(");
这对我来说,谢谢!我只是在尝试单一的\ – 2013-03-05 23:33:49
split
方法采用正则表达式模式。
如果你想拆就“只是一个普通的字符串”您可以使用Pattern.quote
引用字符串第一:
println "Hello World(1)".split(Pattern.quote("("))
或者你可以在'“\\(”',它首先转义'\\('到'\(',然后正则表达式引擎转义'\('到字面括号 – jedyobidan 2013-03-05 23:30:45
这很有趣......在这种情况下,我没有考虑使用Pattern.quote()。好的回答Jon – 2013-03-05 23:31:59
@jedyobidan:那么'Pattern.quote'就是这么做的 - 它只是意味着你不需要手动去做... – 2013-03-05 23:43:24
你要逃避括号字符正确
println "Hello World(1)".split("\\(")
使用groovy原生正则表达式语法时,您还可以使用单个转义:
assert "Hello World(1)".split(/\(/) == ["Hello World", "1)"]
由于分割只是接受正则表达式,你必须传递给它作为一个逃逸字符。对于这一点,你必须附加一个反斜杠在它前面
\(
但是上面,因为它解析为一个有效的转义字符,如具有编译错误:
\t Tab
\n New Line or Line Feed
\r Carriage Return
所以,你必须通过非意义的字符(例如括号)与2-反斜杠:
\\(
最后:
println "Hello World(1)".split("\\(");
或者你也可以做的类模式命名的java的内建功能万物报价:
println "Hello World(1)".split(Pattern.quote("("));
你需要逃出像这样'\\(' – ant 2013-03-05 23:28:42
逃脱不起作用@ant – 2013-03-05 23:30:28
对不起双斜杠 – ant 2013-03-05 23:31:56