在Groovy中替换(转义)字符

时间:2019-07-18 13:29:49

标签: gradle groovy

对于gradle脚本,我正在编写字符串,这些字符串将用作后续gradle测试任务的命令行。字符串之一是用户的密码,该密码最终将使用JVM的DNS request timed out. timeout was 2 seconds. 服务器: UnKnown Address: 192.168.43.245 非权威应答: 名称: aaaa.1.tqtqtq.aaa Addresses: 192.168.43.245 192.168.43.245 选项传递给被调用(执行)的“ java ...”调用,例如: -D

这里使事情变得复杂的是,该密码可以/应该包含特殊字符,这可能会干扰字符串作为命令行的使用。换句话说:我需要转义特殊字符(特定于OS)。 :-(

现在是我的实际问题: 我想使用-Dpassword=foobar方法,即String.replaceAll

例如简化了诸如replaceAll(list_of_special characters, EscapeCharacter + Ref_to_matched_character)

replaceAll("[#$%^&]", "^$1")表示转义字符,'^'表示匹配的字符。

有可能吗,即可以在replaceAll的第二个参数中引用匹配的模式吗?

2 个答案:

答案 0 :(得分:0)

  

有可能吗,即可以在replaceAll的第二个参数中引用匹配的模式吗?

是的,有可能

'a#b$c'.replaceAll('([#$%^&])', '^$1')

返回

a^#b^$c

答案 1 :(得分:0)

感谢您的回复和评论,提高了可读性。同时,我的表情开始起作用。对于那些感兴趣的人:

// handles gthe following: `~!@#$%^&*()_+-={}|[]\:;"'<>?,./
escaped = original.replaceAll('[~!@#\\$\\%\\^\\&\\*\\(\\)_\\+-={}\\|\\[\\]\\\\:;\"\\\'<>\\?,\\./]', '^$0') // for Windows - cmd.exe