如何删除string中使用Java重复的空格?

如何在使用Java的string中删除重复的空格(包括制表符,换行符,空格等)?

喜欢这个:

yourString = yourString.replaceAll("\\s+", " "); 

例如

 System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " ")); 

输出

 lorem ipsum dolor sit. 

那是什么意思?

\s+是一个正则expression式。 \s匹配空格,制表符,换行符,回车符,换页符或垂直制表符, +表示“其中一个或多个”。 因此,上面的代码会将所有比一个字符长的“空白子串”合并为一个空格字符。


来源: Java:删除string中的重复空白

你可以使用正则expression式

 (\s)\1 

$1取代它。

Java代码:

 str = str.replaceAll("(\\s)\\1","$1"); 

如果input是"foo\t\tbar "你会得到"foo\tbar "作为输出
但是如果input是"foo\t bar" ,它将保持不变,因为它没有任何连续的空格字符。

如果您将所有空白字符(空格,垂直制表符,水平制表符,回车符,换页符,换行符)视为空格,则可以使用以下正则expression式将单个空格replace为任意数量的连续空格:

 str = str.replaceAll("\\s+"," "); 

但是如果你想用一个空格来replace两个连续的空格,你应该这样做:

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

试试这个 – 你必须import java.util.regex.*;

  Pattern pattern = Pattern.compile("\\s+"); Matcher matcher = pattern.matcher(string); boolean check = matcher.find(); String str = matcher.replaceAll(" "); 

其中string是您需要删除重复空格的string

嗨最快(但不是最漂亮的方式)我发现是

 while (cleantext.indexOf(" ") != -1) cleantext = StringUtils.replace(cleantext, " ", " "); 

这是相当于一个正则expression式在Android上运行得非常快

 String str = " Text with multiple spaces "; str = org.apache.commons.lang3.StringUtils.normalizeSpace(str); // str = "Text with multiple spaces" 

虽然为时已晚,但我find了一个更好的解决scheme(对我来说很有用),它将用一种types的空白区域replace所有连续的相同types的空白区域。 那是:

  Hello!\n\n\nMy World 

将会

  Hello!\nMy World 

请注意,还有前后的空格。 所以我的完整解决scheme是:

 str = str.trim().replaceAll("(\\s)+", "$1")); 

这里, trim()用“”replace所有前导和尾随的空白string。 (\\s)用于捕获组#1中的 \\s (即空格,如'','\ n','\ t')。 +符号用于匹配1个或更多前面的标记。 所以(\\s)+可以是任何单个空格字符('','\ n'或'\ t')中的连续字符(1或更多)。 $1用于replace匹配types(即已匹配的单个空白字符)的匹配string与组#1string(仅包含1个空格字符)。 上面的解决scheme将会像这样改变:

  Hello!\n\n\nMy World 

将会

 Hello!\nMy World 

我还没有find我的上述解决scheme,所以我已经发布了它。

如果你想摆脱所有前导和后续无关的空白,那么你想要做这样的事情:

 // \\A = Start of input boundary // \\z = End of input boundary string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1"); 

然后你可以使用这里列出的其他策略删除重复:

 string = string.replaceAll("\\s+"," "); 

你也可以尝试使用String Tokeniser,任何空格,制表符,换行符和全部。 一个简单的方法是,

 String s = "Your Text Here"; StringTokenizer st = new StringTokenizer( s, " " ); while(st.hasMoreTokens()) { System.out.print(st.nextToken()); } 

这可以分三步进行:

  1. 将string转换为字符数组(ToCharArray)
  2. 在特征数组上应用循环
  3. 然后应用stringreplacefunction(replace(“刺你想replace”,“原始string”));