groovy Grails:拆分包含管道的字符串

yrwegjxp  于 2022-11-01  发布在  其他
关注(0)|答案(2)|浏览(158)

我正在尝试拆分一个String

groovy:000> print "abc,def".split(",");
[abc, def]===> null
groovy:000>

但我需要在管道上拆分它,而不是逗号,但我没有得到想要的结果:

groovy:000> print "abc|def".split("|");
[, a, b, c, |, d, e, f]===> null
groovy:000>

因此,我的第一选择当然是从竖线(|)切换到逗号(,)作为分隔符。
但现在我很好奇:为什么这不起作用?退出管道(\|)似乎没有帮助:

groovy:000> print "abc|def".split("\|");
ERROR org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, groovysh_parse: 1: unexpected char: '\' @ line 1, column 24.
   print "abcdef".split("\|");
                          ^

1 error
|
        at java_lang_Runnable$run.call (Unknown Source)
groovy:000>
ev7lccsx

ev7lccsx1#

您需要在\\|上拆分。

dzjeubhm

dzjeubhm2#

你必须转义管道符,因为它在正则表达式中确实有特殊的含义。但是,如果你使用引号,你必须转义斜杠。基本上,有两种选择:

asserts "abc|def".split("\\|") == ['abc','def']

或者使用/作为字符串分隔符以避免额外的转义

asserts "abc|def".split(/\|/) == ['abc','def']

相关问题