如何使用 Java 删除字符串中重复的空格(包括制表符、换行符、空格等) ?
试试这个-你必须 import java.util.regex.*;
import java.util.regex.*;
Pattern pattern = Pattern.compile("\\s+"); Matcher matcher = pattern.matcher(string); boolean check = matcher.find(); String str = matcher.replaceAll(" ");
其中 string是您的字符串,您需要删除重复的空白
string
像这样:
yourString = yourString.replaceAll("\\s+", " ");
比如说
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
输出
lorem ipsum dolor sit.
\s+是什么意思?
\s+
\s+是一个正则表达式。\s匹配一个空格、制表符、新行、回车符、表单提要或垂直制表符,+表示“其中的一个或多个”。因此,上面的代码将使用一个空格字符折叠所有长于一个字符的“空格子字符串”。
\s
+
资料来源: Java: 删除字符串中的重复空格
可以使用正则表达式
(\s)\1
还有
用 $1代替。
$1
Java 代码:
str = str.replaceAll("(\\s)\\1","$1");
如果输入是 "foo\t\tbar ",那么您将得到 "foo\tbar "作为输出 < br > ,但是如果输入是 "foo\t bar",那么它将保持不变,因为它没有任何连续的空格字符。
"foo\t\tbar "
"foo\tbar "
"foo\t bar"
如果你把所有的空格字符(空格、垂直制表符、水平制表符、回车符、表单提要、新行)都当作空格,那么你可以使用下面的正则表达式用一个空格替换连续空格的 任何数量:
str = str.replaceAll("\\s+"," ");
但是如果你想用一个空格替换两个连续的空格,你应该这样做:
str = str.replaceAll("\\s{2}"," ");
这可以通过三个步骤实现:
如果你想去掉所有前导和尾随的无关空格,那么你可以这样做:
// \\A = Start of input boundary // \\z = End of input boundary string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");
然后你可以使用下面列出的其他策略来删除重复项:
string = string.replaceAll("\\s+"," ");
嗨,我找到的最快的(但不是最漂亮的)方法是
while (cleantext.indexOf(" ") != -1) cleantext = StringUtils.replace(cleantext, " ", " ");
这在 android 上运行得非常快,与正则表达式相反
虽然为时已晚,但我已经找到了一个更好的解决方案(对我有效) ,它将用其类型的一个空白替换所有连续的相同类型的空白。那就是:
Hello!\n\n\nMy World
将会是
Hello!\nMy World
注意仍然有前后空格,因此我的完整解决方案是:
str = str.trim().replaceAll("(\\s)+", "$1"));
在这里,trim()用“”替换所有前导空格字符串和尾随空格字符串。(\\s)用于捕获 第一组中的 \\s(即空格,如‘’、‘ n’、‘ t’)。+符号用于匹配1个或多个前置标记。因此,(\\s)+可以是任何单个空格字符(’、’n’或’t’)中的连续字符(1个或更多)。$1是用匹配类型的 第一组字符串(只包含1个空白字符)替换匹配的字符串(即已匹配的单个空白字符)。上面的解决方案会变成这样:
trim()
(\\s)
\\s
(\\s)+
我还没有找到我的上述解决方案在这里,所以我已经张贴了它。
您还可以尝试对任何空格、制表符、换行符等使用 String Tokeniser,
String s = "Your Text Here"; StringTokenizer st = new StringTokenizer( s, " " ); while(st.hasMoreTokens()) { System.out.print(st.nextToken()); }
String str = " Text with multiple spaces "; str = org.apache.commons.lang3.StringUtils.normalizeSpace(str); // str = "Text with multiple spaces"