替换换行符和额外空格

时间:2017-09-10 14:48:29

标签: java android regex

我的文字是这样的:

[spaces] This is a [spaces]  line [spaces] [newline]<br/>  
which has been [spaces] broken [newline]<br/> 
[newline]<br/> 
[newline]<br/> 
into multiple part[spaces] [newline]<br/> 

我想:

  • 删除带空格的单个换行符
  • 使用单个换行符删除多个换行符
  • 删除带有单个空格的多个空格
  • 保持单个空白区域。

所以上面的文字应该是这样的:

This is a line which has been broken<br/>
into multiple part.

我正在使用java(用于Android应用)。我在SO上尝试了一些解决方案,但只有trim()似乎可以在文本的开头和结尾处删除空格。其他ReplaceAll()方法在我的案例中不起作用。

任何帮助将不胜感激。 谢谢。

更新 我用过这段代码: replaceAll("\n", " ").replaceAll("[\n]{2,}", "\n").replaceAll(" +", " ")

但它没有按预期工作。

似乎我需要能够同时完成所有这三个替换的东西,而不是将字符串从一个传递给另一个replaceAll()

应该看看是否还有两个\n然后将其替换为一个\n如果只有一个\n,则将其替换为空格。

我认为我应该首先使用TWOFEEDS之类的单词替换两个或更多\n,然后用空格替换单\n。之后,我再次用一个\n

替换TWOFEEDS

更新2 这按预期工作。但是我不确定当我从DB表中传递7200条文本记录时会有多慢。

replaceAll("[\n]{2,}", "TWOFEEDS").replaceAll("\n", " ").replaceAll(" +", " ").replaceAll("<br/>", "\n").replaceAll("TWOFEEDS", "\n")

如果有任何改进请告诉我。

4 个答案:

答案 0 :(得分:6)

使用正则表达式,您可以删除多余的空格和行。

代码:

String text = text.replaceAll("\\s+", " ");

这将为您提供预期的输出。

答案 1 :(得分:0)

如果有人需要回答这类问题,那么我终于解决了这个问题

replaceAll("\n", " ").replaceAll("[\n]{2,}", "\n").replaceAll(" +", " ")

即使对于7k记录也是如此。另外,您可能希望在申请上面trim()之前使用replaceAll()使用它像yourtext.trim()。replaceAll ....(基本上代码上面)

答案 2 :(得分:0)

尝试此操作,以单个新行替换多个新行:

yourStr.replaceAll("[\r\n]+", "\r\n")

答案 3 :(得分:0)

使用ID

String.replace(/\s\s+/g, ' ')