如何删除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”));