我正在使用JPA阅读和操作MS SQL表。我通过删除换行符在要清理的单元格中有文本。下面是一个文本示例(在记事本中粘贴这个文本,每行显示**CR LF**
):
(
(NVSM in (1,2)) and
(NISFVSM in (1,2)) and
(TRMBVSM = 0)
)
我尝试过以下代码,但我无法摆脱新行
flatTextString.trim()
.replace(System.getProperty("line.separator"), " ")
.replaceAll("\t", "")
.replaceAll("(\\r|\\n)", "")
.replaceAll("\\s{2,}", " ")
;
我该如何解决这个问题?
答案 0 :(得分:0)
我建议只用空格替换所有换行符和回车符,然后在关闭)
之前和打开(
之后删除所有空格:
String flatTextString = "(\r\n(NVSM in (1,2)) and\r\n(NISFVSM in (1,2)) and\r\n(TRMBVSM = 0)\r\n)";
System.out.println(flatTextString.replaceAll("[\r\n]+", " ").replaceAll("\\s+\\)", ")").replaceAll("\\(\\s+", "(")); // My way
// => ((NVSM in (1,2)) and (NISFVSM in (1,2)) and (TRMBVSM = 0))
请参阅IDEONE demo
由于Java正则表达式无法使用条件替换模式,因此您只能链接replaceAll
方法,就像我在上面的代码段中所示。