在Java开发中,字符串处理是常见需求,而去掉字符串中的空格更是基础且高频的操作,无论是用户输入清洗、数据格式化还是文本解析,都可能涉及空格处理,本文将系统介绍Java中去除字符串空格的多种方法,涵盖原生API、正则表达式、工具类等场景,帮助开发者根据实际需求选择合适方案。

使用String.trim()方法:去除首尾空格
trim()是Java字符串类提供的最基础方法,专门用于去除字符串首尾两侧的空白字符(包括空格、制表符\t、换行符\n等),其核心特点是操作简单、性能高效,但仅处理字符串两端,不涉及中间空格。
示例代码:
String str = " hello world "; String result = str.trim(); // 输出:"hello world"(中间空格保留)
适用场景:当明确只需要清理字符串开头和结尾的多余空格时,如处理用户输入的账号、密码等数据,避免首尾空格影响业务逻辑。
使用String.replace()方法:去除所有空格
若需去除字符串中所有空格(包括中间空格),可使用replace()方法,该方法支持字符或字符串替换,通过将空格替换为空字符串实现去空格效果。
示例代码:
String str = "he l lo wor ld";
String result = str.replace(" ", "");
// 输出:"helloworld"(所有空格均被移除)
注意事项:replace()方法区分大小写,且仅匹配字面量空格,不会匹配制表符、换行符等其他空白字符,若需处理所有空白字符,需结合正则表达式。
使用正则表达式:灵活去除各类空白字符
正则表达式是处理字符串模式的强大工具,可通过replaceAll()或replaceFirst()方法实现更灵活的空格处理。

去除所有空白字符(含空格、\t、\n等)
使用\s匹配任意空白字符(包括空格、制表符、换行符、回车符等),通过replaceAll("\\s", "")一次性移除所有空白字符。
示例代码:
String str = "he\tl\nlo \n world";
String result = str.replaceAll("\\s", "");
// 输出:"helloworld"(所有空白字符均被移除)
去除连续多个空格为单个空格
若需将字符串中连续的多个空格(或空白字符)合并为一个,可使用replaceAll("\\s+", " "),其中\s+匹配1个或多个连续空白字符,替换为单个空格。
示例代码:
String str = "hello world java";
String result = str.replaceAll("\\s+", " ");
// 输出:"hello world java"(连续空格合并为单个)
使用Java 8 Stream API:函数式风格处理空格
对于复杂字符串处理场景,Java 8 Stream API提供了函数式编程风格的支持,通过将字符串拆分为字符流,过滤掉空格字符后再拼接,可实现灵活去空格逻辑。
示例代码:
String str = "s t r e a m";
String result = str.chars()
.mapToObj(c -> (char) c)
.filter(ch -> ch != ' ')
.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
.toString();
// 输出:"stream"
适用场景:当去空格操作需要与其他字符串处理(如转换大小写、过滤特定字符)结合时,Stream API的链式调用能提升代码可读性。

使用Apache Commons Lang工具类:简化开发
若项目中已引入Apache Commons Lang库(commons-lang3),可直接使用StringUtils工具类提供的静态方法,简化空格处理逻辑。
去除所有空白字符
StringUtils.deleteWhitespace()方法可移除字符串中所有空白字符(包括空格、\t、\n等),功能与replaceAll("\\s", "")类似,但代码更简洁。
示例代码:
String str = "com mon s lang"; String result = StringUtils.deleteWhitespace(str); // 输出:"commons"
去除首尾空格
StringUtils.trim()方法与String.trim()功能一致,但能更好地处理null值(不会抛出异常)。
示例代码:
String str = " null safe "; String result = StringUtils.trim(str); // 输出:"null safe"
方法选择与注意事项
| 方法 | 去除范围 | 特点 | 适用场景 |
|---|---|---|---|
trim() |
仅首尾空格 | 原生方法,性能高 | 清理输入数据首尾空格 |
replace(" ", "") |
所有空格(仅空格) | 简单直接,仅匹配空格 | 简单去空格需求 |
replaceAll("\\s", "") |
所有空白字符(含\t、\n等) |
正则表达式,功能强大 | 处理复杂空白字符 |
| Stream API | 自定义过滤(如仅去空格) | 函数式风格,可链式操作 | 复杂字符串处理场景 |
StringUtils |
多种模式(首尾/所有) | 需引入依赖,支持null安全 | 项目已使用Commons Lang库时 |
实际开发中,需根据需求(是否保留中间空格、是否处理其他空白字符、是否依赖外部库)选择合适方法,若仅需快速处理首尾空格,优先用trim();若需移除所有空白字符,replaceAll("\\s", "")或StringUtils.deleteWhitespace()是高效选择。















