【发布时间】:2016-04-16 20:20:46
【问题描述】:
我正在使用 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,}", " ")
;
我该如何解决这个问题?
【问题讨论】:
-
是否有理由用空格替换换行符?也许只是
\R+=>''替换就足够了?或者[\r\n]+=>' '如果您需要用空格替换 1 个或多个换行符? -
如果你的意思是 "line.separator"), " " 是的,它必须是这样,因为在其他文本单元格中,如果我用 "" 替换它会出现问题
-
不应该 replaceAll("(\\r|\\n)", "") 那样做吗?
-
参见this demo,您的代码删除了换行符。我添加了
flatTextString.replaceAll("[\r\n]+", " "),它的输出是一样的。 -
那么,你现在问的是一个不同的问题,还是你之前没有提到这个问题:)?我想您需要在左括号之后和右括号之前删除空格:
.replaceAll("\\s+\\)", ")").replaceAll("\\(\\s+", "(")。见this demo。第一个输出是我的代码。