[英]replacing \n in a String
我的類似問題有幾個答案,但我已經嘗試了其中幾個並且它們不起作用。 我一定是在做一些愚蠢的事。
我有
String newline = System.getProperty("line.separator");
String content = "Test\n another line\n";
if(content.contains("\\n")) {
content = content.replaceAll("(\\n)", newline);
System.out.print(content);
}
我還在正則表達式中嘗試了“\\ n”和“\\\\ n”。 使用replaceAll保持內容不變。
好的事實:
\\r
是CR,U + 000D \\n
是LF,U + 000A 那些你可以放在String中的字符
String s = "line 1.\nline 2.\n";
String newline = System.getProperty("line.separator");
newline
可以是"\\n"
(1個字符)或"\\r\\n"
(2個字符)或者還有其他內容。
如果您要閱讀此文本,首先讀取反斜杠然后讀取n
,它將在代碼中:
String nl = "\\n"; // Two chars, an escaped backslash and a `n`.
String nl = "\\" + 'n'; // Two chars, an escaped backslash and a `n`.
如果你想用真正的換行替換這兩個字符:
s = s.replace("\\n", "\n");
s = s.replace("\\n", newline); // Platform dependent
現在java正則表達式仍然更加復雜,因為它使用反斜杠轉義正則表達式字母,這在字符串中會自行轉義:
你不需要在這里使用正則表達式replaceAll / replaceFirst,但它會像:
s = s.replaceAll("\\\\n", "\n");
包含兩個反斜杠的模式:正則表達式轉義一個反斜杠。
String newline = System.getProperty("line.separator");
String content = "Test\\n another line\\n";
if(content.contains("\\n")) {
content = content.replaceAll("\\\\n", newline);
System.out.print(content);
}
額外的2個斜杠是轉義字符
我也試過這個並且它有效
content.replace("\\n", "\\r\\n")
但
content.replaceAll("\\n", "\\r\\n")
才不是。
所以最后我用了
while(content.contains("\\n")) {
content = content.replace("\\n", newline);
}
這解決了我的問題,不優雅,但它的工作原理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.