我正在创建一个小程序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有关。任何帮助表示赞赏!
答案 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", "#");