在 Java 编程中,处理字符串空格是一项常见的需求,无论是去除用户输入的多余空格,还是清理从文件或数据库读取的数据,掌握去除空格的方法都能提升代码的健壮性和数据处理效率,本文将系统介绍 Java 中去除字符串空格的多种方式,涵盖标准库方法、正则表达式应用以及不同场景下的最佳实践。

使用 String 类的内置方法
Java 的 String 类提供了直接去除空格的方法,适用于大多数基础场景,其中最常用的是 trim()、replaceAll() 和 replace() 方法。
trim() 方法:去除首尾空格
trim() 是最简单的去空格方式,专门用于去除字符串开头和结尾的空白字符(包括空格、制表符 \t、换行符 \n 等)。
String str = " Hello World "; String trimmedStr = str.trim(); // 结果: "Hello World"
需要注意的是,trim() 不会去除字符串中间的空格,如果需要处理中间空格,需结合其他方法。
replaceAll() 方法:基于正则表达式去除所有空格
replaceAll() 方法支持正则表达式,可以灵活去除所有空格(包括中间空格),通过正则表达式 \\s(匹配任何空白字符)或 ` `(匹配空格)实现:
String str = " He l l o Wo r ld ";
String noSpaceStr = str.replaceAll("\\s", ""); // 结果: "HelloWorld"
如果只想去除空格(不包含制表符、换行符等),则使用 :
String noSpaceStr = str.replaceAll(" ", ""); // 结果: "HelloWorld"
replace() 方法:替换指定字符
replace() 方法与 replaceAll() 类似,但不支持正则表达式,适合直接替换空格:

String str = " He l l o Wo r ld ";
String noSpaceStr = str.replace(" ", ""); // 结果: "HelloWorld"
replace() 的优势在于性能略优于 replaceAll()(无需解析正则表达式),但灵活性较低。
处理不同类型的空格
实际开发中,空格可能包含多种形式:半角空格(`)、全角空格( )、制表符(\t`)等,需要根据需求选择合适的方法。
去除所有空白字符(含全角空格)
全角空格的 Unicode 值为 \u3000,可通过正则表达式统一处理:
String str = " Hello World ";
String noSpaceStr = str.replaceAll("[\\s ]", ""); // 结果: "HelloWorld"
这里的正则表达式 [\\s ] 表示匹配所有空白字符(含半角、全角空格)。
仅保留单词间单个空格
如果目标是规范字符串格式(如去除多余空格,保留单词间单个空格),可结合正则表达式:
String str = " Hello World ";
String normalizedStr = str.replaceAll("\\s+", " ").trim(); // 结果: "Hello World"
\\s+ 匹配一个或多个连续空白字符,替换为单个空格后再用 trim() 去除首尾空格。

性能与场景选择
不同方法在性能和适用场景上存在差异,需根据实际需求权衡:
trim():性能最优,仅适用于去除首尾空格,适合处理用户输入的简单清理(如去除密码前后空格)。replace()vsreplaceAll():replace()适合直接替换固定字符(如空格),性能较好;replaceAll()适合复杂模式(如去除所有空白字符或全角空格),但正则解析会增加少量开销。
- 正则表达式优化:对于高频调用的去空格逻辑,建议预编译正则表达式(
Pattern.compile()),避免重复解析:Pattern pattern = Pattern.compile("\\s+"); String noSpaceStr = pattern.matcher(str).replaceAll("");
实战示例:去除字符串中的所有空格
以下是一个综合示例,展示如何去除字符串中的所有空格(含半角、全角)并规范格式:
public class SpaceRemover {
public static void main(String[] args) {
String input = " Hello World\tJava ";
// 去除所有空格(含半角、全角、制表符)
String noSpaceStr = input.replaceAll("[\\s ]", "");
System.out.println("去除所有空格: " + noSpaceStr); // 输出: "HelloWorldJava"
// 规范化:保留单词间单个空格
String normalizedStr = input.replaceAll("\\s+", " ").trim();
System.out.println("规范化格式: " + normalizedStr); // 输出: "Hello World Java"
}
}
注意事项
- 字符串不可变性:
String类的方法不会修改原字符串,而是返回新字符串,需重新赋值。 - 空字符串处理:调用
trim()或正则方法前,建议检查字符串是否为null,避免NullPointerException:String str = null; String result = str == null ? "" : str.trim();
- 国际化字符:全角空格等 Unicode 字符需确保文件编码为 UTF-8,避免乱码问题。
通过以上方法,可以灵活应对 Java 开发中各种去空格需求,根据场景选择合适的方法,既能保证代码简洁性,又能提升处理效率。


















