簡體   English   中英

如何在 java 中用 \n 替換空格?

[英]How do I replace spaces with \n in java?

目前有

<?xml version="1.0" encoding="ISO-8859-1"?>  <entity>  <id>8624</id>  <name>Test_Report.csv</name>  <startDate>24/05/2021 9:15 am</startDate>  <level>info</level>  </entity>

我做了:

message = messsage.replaceAll("\\s+","\\n")

這給了我:

<?xml version="1.0"\nencoding="ISO-8859-1"?>\n<entity>\n<id>8624</id>\n  <name>Test_Report.csv</name>\n<startDate>24/05/2021\n9:15 am</startDate>\n<level>info</level>\n </entity>

我希望 output 保持 xml 元素數據中的空格不變,如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<entity>
<id>8624</id>
<name>Test_Report.csv</name>
<startDate>24/05/2021 9:15 am</startDate>
<level>info</level>
</entity>
message = messsage.replaceAll("(?<=>)\\s*(?=<)","\n")

正確的正則表達式應該只匹配><字符之間的空格,所以它看起來像這樣\>\s*?\< (當>< XML 標記之間沒有空格時它也可以工作)。

替換字符串將是>\n<

請注意, String.replaceAll的第二個參數是純字符串,而不是正則表達式,因此您不需要使用反斜杠\對其進行轉義。

替換字符串中的反斜杠 (\) 和美元符號 ($) 可能會導致結果與將其視為文字替換字符串時的結果不同。 美元符號可被視為對捕獲的子序列的引用,反斜杠用於轉義替換字符串中的文字字符。

message.replaceAll("\\>\s*?\\<", ">\n<");

您可以在此處在線運行它 - https://www.mycompiler.io/view/1Bm8MzU


如果您的 XML 字符串已經格式化(即帶有空格的縮進),您可以通過將這些縮進空格字符捕獲到組\>(\s*?)\<並使用>\n$1<在該組之前添加一個新行字符來保留這些縮進空格字符>\n$1< .

message.replaceAll("\\>(\\s*?)\\<", ">\n$1<")

您可以在此處在線運行它 - https://www.mycompiler.io/view/5zaV7tf

String message = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>  <entity>  <id>8624</id>  <name>Test_Report.csv</name>  <startDate>24/05/2021 9:15 am</startDate>  <level>info</level>  </entity>";
String result = message.replaceAll(">\\s*<", ">\n<");
System.out.println(result);

將匹配所有出現在><字符之間的零個或多個空格,然后匹配的模式將替換為>\n< ,輸出:

<?xml version="1.0" encoding="ISO-8859-1"?>
<entity>
<id>8624</id>
<name>Test_Report.csv</name>
<startDate>24/05/2021 9:15 am</startDate>
<level>info</level>
</entity>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM