我有以下字符串
String str="select * from m_menus;
select * from m_roles";
我想在一行中使用上面的字符串
String str="select * from m_menus;select * from m_roles";
我试过了
str1=str.replace("[\r\n]+", " ");
并且
str1=str.replace("\n"," ");
两者都不起作用。
改为使用String.replaceAll
。
str1=str.replaceAll("[\r\n]+", " ");
没有正则表达式和操作系统独立:
str1.replaceAll(System.lineSeparator(), " ");
Windows 使用 \r\n 作为换行符,而 *nix 系统仅使用 \n。
如果要使用正则表达式,则应使用该String.replaceAll()
方法。
你为什么不使用str.replaceAll("\r\n", " ")
?
应该工作并替换所有发生的事情。
使用 Java 11 行()
Java 11 添加了新方法String::lines
,lines
方法使用专门Spliterator
用于从源字符串中延迟提供行
yourMultilineString.lines().collect(Collectors.joining(";"));
注意该字符串使用 Windows' \r\n
,即使我在 Linux 上,lines() 仍然会拆分它。这是因为无论操作系统如何,该方法都将 \r、\n 和 \r\n 视为行终止符并在那里拆分——即使它们混合在同一个字符串中。
str1=str.replaceAll("[\r\n]+", " ");