关闭

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

标签: Regex字符串 替换 空行 多余空格
9974人阅读 评论(0) 收藏 举报
分类:

这几天重拾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;
}


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

0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:87039次
    • 积分:1498
    • 等级:
    • 排名:千里之外
    • 原创:65篇
    • 转载:7篇
    • 译文:1篇
    • 评论:7条
    最新评论
    测试类技术网站
    管理类网站
    推荐网站