【发布时间】:2018-02-18 21:14:40
【问题描述】:
我的文字是这样的:
[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 应用程序)。我在这里尝试了一些解决方案,但只有trim() 似乎可以工作,它会在文本的开头和结尾去除空格。其他ReplaceAll() 方式在我的情况下不起作用。
任何帮助将不胜感激。 谢谢。
更新
我使用了这段代码:
replaceAll("\n", " ").replaceAll("[\n]{2,}", "\n").replaceAll(" +", " ")
但它没有按预期工作。
看来我需要能够同时完成所有这三个替换的东西,而不是将字符串从一个传递到另一个 replaceAll()
它应该看看是否有两个以上的\n 然后用一个\n 替换它,如果已经只有一个\n 然后用一个空格替换它。
我想我应该先用 TWOFEEDS 之类的词替换两个或多个 \n,然后用空格替换单个 \n。之后,我再次将 TWOFEEDS 替换为一个 \n
更新 2 这按预期工作。但是我不确定当我从数据库表中传递 7200 条文本记录时它会有多慢。
replaceAll("[\n]{2,}", "TWOFEEDS").replaceAll("\n", " ").replaceAll(" +", " ").replaceAll("<br/>", "\n").replaceAll("TWOFEEDS", "\n")
如果有任何需要改进的地方,请告诉我。
【问题讨论】:
-
欢迎来到 Stack Overflow!请take the tour 了解该网站的运作方式以及此处的主题问题,并相应地编辑您的问题。另见:Why is "Can someone help me?" not an actual question?
-
正则表达式就是为了解决这个问题而诞生的。了解正则表达式。