Java正则表达式替换移除空行和多余的空格

原创 2015年07月10日 13:06:40

这几天重拾Java写代码,需要操作文本文件中的内容。

最终,要把内容里的空行和多余的连续空格移除,使用String里的replace或者replaceAll,试了很多次都没有成功。

最后发现需要使用正则表达式Regex。先把解决方案共享如下。

1. 移除多余的连续空格,只留下一个空格。

string.replaceAll("\\s{2,}", " ");

比较简单\\s代表空格,使用贪婪表达式,如果是2个或多个空格,则替换为空格。

续,实践中发现不工作原来\\s不光代表空格,是等于[ \t\n\x0B\f\r]

\\p{Blank}{2,} 则是A space or a tab

更简单的 string.replaceAll("[ ]+", " ");


2. 移除空行

string.replaceAll("(?m)^\\s*$"+System.lineSeparator(), "");

?m开启多行模式,^是行开始,\\s*代表任意个空格,$代表行结束,System.lineSeparator()则是为了跨平台的换行符。

故所有空行包括只含有空格的空行都会被替换为空字符串,即被移除。


考虑到不同平台的文件存在混用的情况,可以改进为 string..replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");


3. 替换字符串中的唯一子字符串,如果子字符串含有正则表达式字符,则替换不成功。

可以考虑自己写一个方法实现。

public String removeString(String str, String old) {
int i = str.indexOf(old);
if (i >= 0) {
return str.substring(0, i) + str.substring(i + old.length());
}
return str;
}


综上, 希望可以帮到大家。

相关文章推荐

Java String.split()函数分隔回车注意事项

我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的。 如果想以回车来分隔字符串,很多同学都会这样做。下面是例子: St...
  • Sun1956
  • Sun1956
  • 2015年04月17日 14:16
  • 13463

java 去掉空行

转自:http://hw1287789687.iteye.com/blog/1916020
  • lskyne
  • lskyne
  • 2014年08月07日 17:09
  • 8509

java 正则(2) 空行匹配

java 正则 空白行 package test.java.RegExp; import java.io.BufferedReader; import java.io.File; import ja...
  • nx188
  • nx188
  • 2016年01月11日 13:09
  • 1109

JAVA 删除文本文件中的空行

import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import ja...
  • rui_gao
  • rui_gao
  • 2013年09月01日 11:27
  • 4303

Java Web中通过配置Tomcat去掉JSP生成的空行

tomcat服务器中的jsp页面中,查看源码会发现顶部有很多空行。这是jsp的动态语句留下来的,诸如: 虽然空行存在不影响页面显示,但是在查看页面源码时还是有点不习惯。在tomcat5...

JAVA中去掉空格换行符回车等

1、去掉首尾空格     String.trim(); 2、去掉所有空格,首尾、中间   2.1 str.replace("  ","");       例子:       String s...

java将去除多余只留一个空格

package test; import java.text.DecimalFormat; public class Test {  /**   * @param args   */  p...
  • snn1410
  • snn1410
  • 2011年11月04日 17:33
  • 2013

JAVA中各种去除空格

1. String.trim() trim()是去掉首尾空格   2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间 String str = " hell o ...
  • qdyu00
  • qdyu00
  • 2012年02月06日 16:39
  • 19024

Java 去除字符串中多余的空格,只留一个

string.replaceAll("\\s{1,}", " ") //就可以了。

java正则表达式去掉匹配空格空行

  java 的去掉空格空行的例子:  String so = "haolong,    hei eip,      "            +"ting,         " +         ...
  • yuan8080
  • yuan8080
  • 2010年05月25日 12:48
  • 15523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java正则表达式替换移除空行和多余的空格
举报原因:
原因补充:

(最多只允许输入30个字)