杰瑞科技汇

Java字符串如何高效去掉空格?

  1. 去掉所有空格(包括单词中间的)
  2. 去掉首尾空格(最常见的需求)
  3. 去掉所有空白字符(如空格、制表符 \t、换行符 \n 等)

下面我将详细介绍每种情况下的最佳实践。

Java字符串如何高效去掉空格?-图1
(图片来源网络,侵删)

去掉字符串中所有的空格

如果你想把字符串里所有的空格(包括单词之间的)都去掉,可以使用 String 类的 replace() 方法。

使用 String.replace()

这是最简单直接的方法,它会替换掉所有匹配的字符。

public class TrimAllSpaces {
    public static void main(String[] args) {
        String str = "  Hello   Java World!  ";
        // 使用 replace() 方法,将所有空格 " " 替换为空字符串 ""
        String result = str.replace(" ", "");
        System.out.println("原始字符串: '" + str + "'");
        System.out.println("去掉所有空格后: '" + result + "'");
        // 输出: 'HelloJavaWorld!'
    }
}

特点:

  • 简单易用:直接调用 replace 即可。
  • 功能明确:专门用于替换字符。

去掉字符串首尾的空格

这是最常见的需求,例如处理用户输入时,去除多余的空格,Java 提供了专门的方法。

Java字符串如何高效去掉空格?-图2
(图片来源网络,侵删)

使用 String.trim() (最推荐)

trim() 方法是专门用来去掉字符串首尾的空白字符(包括空格、\t\n 等)的。

public class TrimExample {
    public static void main(String[] args) {
        String str = "  Hello Java World!  ";
        // 使用 trim() 方法
        String result = str.trim();
        System.out.println("原始字符串: '" + str + "'");
        System.out.println("去掉首尾空格后: '" + result + "'");
        // 输出: 'Hello Java World!'
    }
}

特点:

  • 最常用:专门为去除首尾空白设计。
  • 效率高:底层实现经过优化。
  • 功能更强:不仅能去掉空格,还能去掉 \t, \n, \r, \f 等其他空白字符。

使用 String.strip() (Java 11+)

如果你使用的是 Java 11 或更高版本,可以使用 strip() 方法,它的功能和 trim() 非常相似,但能更好地处理 Unicode 标准中的空白字符。

// 需要 Java 11 或更高版本
public class StripExample {
    public static void main(String[] args) {
        String str = "  Hello Java World!  ";
        String result = str.strip();
        System.out.println("原始字符串: '" + str + "'");
        System.out.println("使用 strip() 后: '" + result + "'");
        // 输出: 'Hello Java World!'
    }
}

trim() vs strip() 的区别:

Java字符串如何高效去掉空格?-图3
(图片来源网络,侵删)
  • trim() 主要基于 ASCII 码定义空白字符。
  • strip() 基于 Unicode 标准,能处理更多种类的空白字符(如全角空格等),在绝大多数情况下,两者效果相同。

去掉所有空白字符(不仅仅是空格)

如果你想去掉所有类型的空白字符,包括空格、制表符 (\t)、换行符 (\n)、回车符 (\r) 等,可以使用正则表达式。

使用 String.replaceAll()

使用正则表达式 \s 可以匹配任何空白字符。

public class TrimAllWhitespace {
    public static void main(String[] args) {
        String str = "  Hello\tJava\nWorld!  ";
        // 使用正则表达式 \s 匹配所有空白字符,并替换为空字符串
        String result = str.replaceAll("\\s", "");
        System.out.println("原始字符串: '" + str + "'");
        System.out.println("去掉所有空白字符后: '" + result + "'");
        // 输出: 'HelloJavaWorld!'
    }
}

注意: 在 Java 字符串中,反斜杠 \ 是一个转义字符,所以表示正则表达式中的 \s 需要写成 "\\s"

使用 String.replace() (仅限空格)

如果你只想去掉空格,但不想用正则表达式,replace() 也是一个好选择,因为它不会引入正则表达式的复杂性。

String str = "  Hello\tJava\nWorld!  ";
String result = str.replace(" ", ""); // 只会替换空格,不会替换 \t 或 \n
System.out.println(result); // 输出: "Hello\tJava\nWorld!"

总结与最佳实践

需求场景 推荐方法 示例代码 备注
去掉所有空格 String.replace(" ", "") str.replace(" ", "") 简单直接,性能好。
去掉首尾空格 String.trim() str.trim() 最常用,专门为此设计。
去掉所有空白字符 String.replaceAll("\\s", "") str.replaceAll("\\s", "") 功能强大,能处理 \t, \n 等。
Java 11+ 去掉首尾空格 String.strip() str.strip() trim() 的现代替代品,Unicode 感知。

一个完整的示例,展示不同方法的效果:

public class AllTrimMethods {
    public static void main(String[] args) {
        String originalStr = "  Hello \t Java \n World!  ";
        System.out.println("原始字符串: '" + originalStr + "'");
        System.out.println("------------------------------------");
        // 1. 去掉所有空格 (保留 \t 和 \n)
        String allSpacesRemoved = originalStr.replace(" ", "");
        System.out.println("去掉所有空格: '" + allSpacesRemoved + "'");
        // 2. 去掉首尾空格 (也去掉 \t 和 \n)
        String trimmed = originalStr.trim();
        System.out.println("去掉首尾空白: '" + trimmed + "'");
        // 3. 去掉所有空白字符
        String allWhitespaceRemoved = originalStr.replaceAll("\\s", "");
        System.out.println("去掉所有空白: '" + allWhitespaceRemoved + "'");
        // 4. Java 11+ 使用 strip()
        if (!originalStr.strip().equals(originalStr.trim())) {
            System.out.println("strip() 和 trim() 结果不同。");
        } else {
            System.out.println("strip() 结果: '" + originalStr.strip() + "'"); // 和 trim() 一样
        }
    }
}

输出结果:

原始字符串: '  Hello      Java 
 World!  '
------------------------------------
去掉所有空格: 'Hello  Java
World!'
去掉首尾空白: 'Hello   Java 
 World!'
去掉所有空白: 'HelloJavaWorld!'
strip() 结果: 'Hello   Java 
 World!'

根据你的具体需求,选择最合适的方法即可,在绝大多数业务场景中,trim() 是最常用和最正确的选择。

分享:
扫描分享到社交APP
上一篇
下一篇