问题
如何使用Java删除字符串中的重复空格(包括制表符,换行符,空格等...)?
#1 热门回答(355 赞)
喜欢这个:
yourString = yourString.replaceAll("\\s+", " ");
例如
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
输出
lorem ipsum dolor sit.
那是什么意思\s+
?\s+
是一个正则表达式.\s
匹配空格,制表符,换行符,回车符,换页符或垂直制表符,以及+
表示"其中一个或多个"。因此,上面的代码将折叠所有"空格子串"长于一个字符,具有单个空格字符。
来源:Java: Removing duplicate white spaces in strings
#2 热门回答(23 赞)
你可以使用正则表达式
(\s)\1
和
用$1
替换它。
Java代码:
str = str.replaceAll("(\\s)\\1","$1");
如果输入是"foo\t\tbar "
,那么你将获得"foo\tbar "
的输出
但是如果输入是"foo\t bar"
将保持不变,因为它没有任何连续的空格字符。
如果将所有空白字符(空格,垂直制表符,水平制表符,回车符,换页符,换行符)视为空格,则可以使用以下正则表达式将单个空格替换为连续空白区域的数量:
str = str.replaceAll("\\s+"," ");
但是如果你想用一个空格替换两个连续的空格,你应该这样做:
str = str.replaceAll("\\s{2}"," ");
#3 热门回答(9 赞)
试试这个 - 你必须到import java.util.regex.*;
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(string);
boolean check = matcher.find();
String str = matcher.replaceAll(" ");
Wherestring
是你需要删除重复空格的字符串