Java中repalceAll和split的转义问题



Java中String的两个常用方法split和replaceAll实际上调用了正则表达式中的方法,因此其字符参数需要考虑到正则表达式中的转义问题
正则表达式中的转义字符:. $ ^ { [ ( | ) * + ? \
参见 https://msdn.microsoft.com/zh-cn/library/4edbef7e(v=vs.110).aspx
如果用以上字符分割或取代字符串,则需要该字符前置双斜杠表示两层转义(第一层字符串语法转义:第一个斜杠表示第二个斜杠是被转义的,即说明双斜杠在字符串中实际被解释为单斜杠;第二层正则表达式语法转义:单斜杠在正则表达式中表示后面的字符是本身的含义而非语法中的含义)


举个栗子:



public class StringTest {
    @Test
    public void test() throws InterruptedException {
        String souS = "天.地";
        String desS = "天地";
        String newS = souS.replaceAll("\\.", "");
        Assert.assertTrue(desS.equals(newS));
    }
}


你可能感兴趣的:(Java中repalceAll和split的转义问题)