[英]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.