Bar*_*ers 76
试试这个:
String text = "line 1\n\nline 3\n\n\nline 5";
String adjusted = text.replaceAll("(?m)^[ \t]*\r?\n", "");
// ...
Run Code Online (Sandbox Code Playgroud)
请注意,正则表达式[ |\t]匹配空格,制表符或管道字符!
顺便说一句,正则表达式(?m)^\s+$也可以做到这一点.
我不知道 Java/^\s*$[\n\r]{1,}/gm中正则表达式的语法,但是您正在寻找的正则表达式。
你可能用 Java 写成这样:
s = s.replaceAll("(?m)^\\s*$[\n\r]{1,}", "");
Run Code Online (Sandbox Code Playgroud)
我用 JavaScript 测试了它,它工作正常。
我不是一名日常 Java 程序员,因此我很惊讶在 JDK 中没有比正则表达式更简单的方法来完成此操作。
反正,
s = s.replaceAll("\n+", "\n");
Run Code Online (Sandbox Code Playgroud)
会简单一点。
更新:
抱歉,我错过了您还想删除空格和制表符。
s = s.replaceAll("\n[ \t]*\n", "\n");
Run Code Online (Sandbox Code Playgroud)
如果你有一致的换行符就会起作用。如果不是,您可能需要考虑使它们保持一致。例如:
s = s.replaceAll("[\n\r]+", "\n");
s = s.replaceAll("\n[ \t]*\n", "\n");
Run Code Online (Sandbox Code Playgroud)