📜  从字符串 java 中删除空格(1)

📅  最后修改于: 2023-12-03 15:36:17.264000             🧑  作者: Mango

从字符串 Java 中删除空格

在 Java 编程中,有时候我们需要从字符串中删除空格。这可以通过许多不同的方式来实现,本文介绍其中常用的几种方法。

使用 String 的 replaceAll() 方法

String 类的 replaceAll() 方法可以根据正则表达式替换字符串中的匹配项。我们可以使用如下的正则表达式匹配所有空格字符:

"\\s+"

使用 replaceAll() 方法将空格字符替换为空字符串即可删除它们:

String str = "  This is a    string with    spaces.  ";
String newStr = str.replaceAll("\\s+", "");
System.out.println(newStr);

输出为:

Thisisastringwithspaces.

注意,该方法会返回一个新字符串,原始字符串不会被修改。

使用正则表达式和 StringBuilder

如果需要处理大量字符串,并且性能是一个问题,使用 StringBuilder 可以更有效率地删除空格。我们可以使用一个类似的正则表达式来匹配空格字符:

Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(str);

然后,我们可以逐步替换每个匹配项:

while (matcher.find()) {
    int start = matcher.start();
    int end = matcher.end();
    builder.append(str, pos, start);
    pos = end;
}
builder.append(str, pos, str.length());

完整的示例代码如下:

String str = "  This is a    string with    spaces.  ";
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(str);
StringBuilder builder = new StringBuilder();
int pos = 0;
while (matcher.find()) {
    int start = matcher.start();
    int end = matcher.end();
    builder.append(str, pos, start);
    pos = end;
}
builder.append(str, pos, str.length());
String newStr = builder.toString();
System.out.println(newStr);

输出为:

Thisisastringwithspaces.
使用一个单一的循环

如果你不想使用正则表达式或 StringBuilder,你可以使用一个单一的循环来删除字符串中的空格。这种方法更加简单,但可能会影响性能。

String str = "  This is a    string with    spaces.  ";
char[] chars = str.toCharArray();
int len = chars.length;
int pos = 0;
for (int i = 0; i < len; i++) {
    if (!Character.isWhitespace(chars[i])) {
        chars[pos++] = chars[i];
    }
}
String newStr = new String(chars, 0, pos);
System.out.println(newStr);

输出为:

Thisisastringwithspaces.

这里我们将字符串转换为一个字符数组,然后循环遍历每个字符。如果当前字符不是空格,我们将其保存在新的字符数组中,并递增计数器,以便在最后创建新的字符串时只包括有用的字符。

以上是从字符串 Java 中删除空格的三种不同方法,你可以根据你的需求选择最适合你的方法。