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 去掉空行

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

JAVA 删除文本文件中的空行

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

JAVA正则表达式匹配多个空格

需求针对tab键带来的多个空格问题,有时候我们针对带空格的一行数据要进行切割,如果有多个空格就会出现就会切割空格出现,我们想把空格都去掉,所以需要用到某些方法。解决方案利用正则表达式来匹配空格\\s+...
  • randompeople
  • randompeople
  • 2017年09月22日 19:59
  • 3013

Java在读取文件内容的时候,如何判断出空白行

一、问题描述: 在用Java读入文件内容时,往往文件中存在空行,有时候用空行来分割不同属性的内容,这个时候,就有必要把这个空行识别出来,在Java中该如何识别空行呢? 二、案例分析: 数据集为:...
  • G_66_hero
  • G_66_hero
  • 2017年05月07日 00:16
  • 3539

正则表达式去除字符串的首尾空格,合并字符串中的多个空格为一个

今天维护一个简单的搜索功能:需求是可以多词高亮搜索,那好吧,无非把输入的字符串拆分成一个数组。然后把搜索到的内容中的这个词高亮。1、字符串处理var searchTest=" 你好 妹妹 哎呀 ...
  • chanzig
  • chanzig
  • 2015年04月29日 00:56
  • 1502

Java去除字符串中的空格、回车、换行符、制表符 及 常用正则表达式

(转)http://blog.sina.com.cn/s/blog_6c868c470100x49j.html都采用的是JDK正则表达式,TranDataBase64是字符串 方法一: TranD...
  • Allenshen2533
  • Allenshen2533
  • 2016年07月26日 09:35
  • 595

Java 单个文件操作(去掉空行,去掉注释,替换引号等)

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F...
  • kalision
  • kalision
  • 2014年12月11日 17:09
  • 4521

探究java中String.replaceAll方法把换行符(\n)替换为明文显示(\n)为何需要四个反斜杠(\\\\n)

最近需要解析一个JSONArray类型的字符串[{"key":"姓名","value":"XX"},{"key":"资质","value":"从事贵金属投资行业10年 国家期货二级分析师 上金所荣誉长...
  • xuanyonghao
  • xuanyonghao
  • 2017年07月13日 14:22
  • 3809

Java中去除字符串中空格的几种方法

1.直接上代码 package com.examplezhc.demo; import android.os.Bundle; import android.app.Activity; publi...
  • ningchao328
  • ningchao328
  • 2016年10月11日 12:08
  • 15680

【Java】关于去除空格

首先必须声明的是,trim()方法,虽然谁都知道,但这东西注意陷入去除所有空格的误区,trim()只能去除字符串前后的字符,对于中间的字符无法处理。 如果要去除所有空格,还是要使用replaceAl...
  • yongh701
  • yongh701
  • 2015年04月25日 16:29
  • 1410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java正则表达式替换移除空行和多余的空格
举报原因:
原因补充:

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