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

How to insert a backslash in front of each pipe

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

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

执行代码时我得到 "illegal escape character in string literal"。

感谢您的帮助 谢谢:D

所以你想在字符串中使用反斜杠?这是一个不错的益智游戏:

String item = "This | is | a | sample".replaceAll("\|" , "\\|");
System.out.println(item);

打印:

This \| is \| a \| sample

这是为什么?
您必须在 Java 字符串文字中使用另一个反斜杠转义文字反斜杠。这同样适用于特殊的 RegEx 符号。所以在上面的例子中,你想要匹配每个文字 |,所以我们在它前面放一个 \(正则表达式转义)和另一个 \(Java 字符串转义首先 \).

String::replaceAll takes a regex as first parameter - on how to use it check

作为其他灵魂,您可以使用 String::replace 方法,该方法采用两个 CharSequence 参数:

String item = "This | is | a | sample".replace("|" , "\|");
System.out.println(item);

输出:

This \| is \| a \| sample

我使用了 mumpitz 提供的示例 - 我希望没问题:)