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

这几天重拾Java写代码,须要操做文本文件中的内容。正则表达式

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

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

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

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

string

比较简单\\s表明空格,使用贪婪表达式,若是是2个或多个空格,则替换为空格。方法

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

\\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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值