对于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的第二个参数中引用匹配的模式吗?
答案 0 :(得分:0)
有可能吗,即可以在replaceAll的第二个参数中引用匹配的模式吗?
是的,有可能
'a#b$c'.replaceAll('([#$%^&])', '^$1')
返回
a^#b^$c
答案 1 :(得分:0)
感谢您的回复和评论,提高了可读性。同时,我的表情开始起作用。对于那些感兴趣的人:
// handles gthe following: `~!@#$%^&*()_+-={}|[]\:;"'<>?,./
escaped = original.replaceAll('[~!@#\\$\\%\\^\\&\\*\\(\\)_\\+-={}\\|\\[\\]\\\\:;\"\\\'<>\\?,\\./]', '^$0') // for Windows - cmd.exe