通过Java从sql记录中删除新行

时间:2016-01-12 09:33:12

标签: java sql regex

我正在使用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,}", " ")
        ;

我该如何解决这个问题?

1 个答案:

答案 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方法,就像我在上面的代码段中所示。