我正在使用 JPA 读取和操作 MS SQL 表。我想通过删除换行符来清理单元格中的文本。下面是一个文本示例(将其粘贴到 notepad++ 中,每一行都会显示 **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,}", " ")
;
我该如何解决这个问题?
最佳答案
我建议仅用空格替换所有换行符和回车符,然后在关闭 )
之前和打开 (
:
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))
由于 Java 正则表达式无法使用条件替换模式,因此您只能链接 replaceAll
方法,如我在上面的代码片段中所示。
关于java - 通过Java从sql记录中删除新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34739929/