如何使用Java删除字符串中的重复空格?

问题

如何使用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是你需要删除重复空格的字符串