我输入如下:

Input: 6jVYY3Xnqt<>:"/\|?*GjznpnRQSb
testInput = testInput.replaceAll("[<>:/\\\"|?*]", "-");
output: 6jVYY3Xnqt----\---GjznpnRQSb


但是如果我这样做:

testInput = testInput.replaceAll("[<>:/\"|?*]", "-");
testInput = testInput.replace("\\", "-");
output: 6jVYY3Xnqt--------GjznpnRQSb


这是Java 7中的错误吗?为什么replaceAll不使用\字符?

最佳答案

您需要对正则表达式中的反斜杠加倍转义,一次是字符串文字,一次是正则表达式:

testInput= testInput.replaceAll("[<>:/\\\\\"|?*]", "-");
//                                    ^^^^
//                                    Represents one backslash

关于java - Java中replaceAll方法的特殊问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27286030/

10-09 13:36