如何删除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()); } 
这可以分三步进行:
- 将string转换为字符数组(ToCharArray)
- 在特征数组上应用循环
- 然后应用stringreplacefunction(replace(“刺你想replace”,“原始string”));