如何在每个管道前面插入反斜杠

Tri*_*ity 0 java string asciidoc replaceall

我想在每个管道前面插入一个反斜杠:

// What i want
MyList.replaceAll(item -> item.replaceAll("|" , "\|")); 
// what i´ve tried that does not work
MyList.replaceAll(item -> item.replaceAll("\\|" , "\\|"));
Run Code Online (Sandbox Code Playgroud)

执行代码时,我得到“字符串文字中的非法转义字符”。

感谢您的帮助Thx:D

mum*_*itz 5

因此,您想在字符串中使用文字反斜杠吗?这是一个很好的难题:

String item = "This | is | a | sample".replaceAll("\\|" , "\\\\|");
System.out.println(item);
Run Code Online (Sandbox Code Playgroud)

印刷品:

This \| is \| a \| sample
Run Code Online (Sandbox Code Playgroud)

为什么是这样?
您必须用Java字符串文字中的另一个反斜杠转义文字反斜杠。特殊的RegEx符号也是如此。因此,在上面的示例中,您想要匹配每个文字|,因此我们在其\之前放置一个(RegEx转义)和另一个\(第一个使用Java字符串转义\)。