用另一个符号替换每个换行符

时间:2016-04-18 18:31:49

标签: java

我正在创建一个小程序atm,我需要用符号f.e替换每个换行符。 "#&#34 ;. 所以如果我输入这个文字:

test1 
test2
test3

它应该成为

test1#test2#test3

我试过这样做:

String text2 = text.replaceAll("\n", "#"); //text is the inputed text
经过一些研究,我也试过了

String text2 = text.replaceAll("\\\\n", "#");

因为有人说这与编译器或idk有关。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

Linebreaks取决于系统。在UNIX系统上,它是“\ n”;在Microsoft Windows系统上,它是“\ r \ n”。因此,最好让您的代码平台独立。

使用类似:

String text = rawText.replaceAll(System.lineSeparator(), "#");

请注意,System.lineSeparator()可从Java 1.7获得。

答案 1 :(得分:0)

键入\\使用转义反斜杠。还要检查回车\r\n

String test = "test1\ntest2\r\ntest3";
System.out.println(test.replaceAll("(\\n|\\r\\n)", "#"));

答案 2 :(得分:0)

如果您的行只能通过replaceAll("\n", "#")分隔,那么

\n应该可以正常工作。如果它不起作用,则表示您的文字正在使用其他行分隔符,例如\r\u0085(下一行 - NEL)或最有可能组合\r\n

由于replaceAll使用正则表达式语法,为了匹配所有行分隔符,我们可以使用\R(在Java 8中添加到regex引擎)。所以你可以试试。

String text2 = text.replaceAll("\\R", "#");

如果你不能使用Java 8(就像Android应用程序一样)你可以使用代表\r\n\n\r的正则表达式:

String text2 = text.replaceAll("\r\n|\n|\r", "#");
//can be reduced to .replaceAll("\r?\n|\r", "#");