在 Java 中,给字符串(String)添加空格有多种方法,具体取决于你的需求,例如是在字符串的开头/结尾添加,还是在两个字符串之间添加,或者是在字符串的特定位置插入。

下面我将分不同场景,为你介绍最常用和最推荐的方法。
在字符串的开头或结尾添加空格
这是最简单的情况,直接使用字符串连接 或 StringBuilder 即可。
方法 1:使用 运算符(简单直接)
适用于少量字符串连接,代码直观。
String original = "Hello";
String withLeadingSpace = " " + original; // 在开头添加一个空格
String withTrailingSpace = original + " "; // 在结尾添加一个空格
String withBothSpaces = " " + original + " "; // 在开头和结尾都添加一个空格
System.out.println("原始字符串: '" + original + "'");
System.out.println("开头加空格: '" + withLeadingSpace + "'");
System.out.println("结尾加空格: '" + withTrailingSpace + "'");
System.out.println("两头都加空格: '" + withBothSpaces + "'");
输出:

原始字符串: 'Hello'
开头加空格: ' Hello'
结尾加空格: 'Hello '
两头都加空格: ' Hello '
方法 2:使用 StringBuilder(性能更优)
如果在循环中或需要拼接大量字符串时,使用 StringBuilder 是更好的选择,因为它可以避免创建多个中间字符串对象,从而提高性能。
String original = "World";
StringBuilder sb = new StringBuilder();
// 在开头添加空格
sb.append(" ").append(original);
String withLeadingSpace = sb.toString();
System.out.println("开头加空格: '" + withLeadingSpace + "'");
// 重置 StringBuilder (或者新建一个)
sb = new StringBuilder();
// 在结尾添加空格
sb.append(original).append(" ");
String withTrailingSpace = sb.toString();
System.out.println("结尾加空格: '" + withTrailingSpace + "'");
在两个字符串之间添加空格
这通常用于格式化输出,比如将一个列表中的元素用空格连接起来。
方法 1:使用 运算符
String firstName = "John"; String lastName = "Doe"; String fullName = firstName + " " + lastName; // 在中间添加一个空格 System.out.println(fullName); // 输出: John Doe
方法 2:使用 String.join() (Java 8+,非常推荐)
这是最优雅、最清晰的方法,专门用于用一个分隔符连接多个字符串。
String part1 = "Java";
String part2 = "is";
String part3 = "awesome";
// 使用空格作为分隔符
String sentence = String.join(" ", part1, part2, part3);
System.out.println(sentence); // 输出: Java is awesome
// 也可以用于连接一个 List 或数组
List<String> words = Arrays.asList("I", "love", "Java");
String anotherSentence = String.join(" ", words);
System.out.println(anotherSentence); // 输出: I love Java
在字符串的特定位置插入空格
这个需求稍微复杂一些,"Java" 变成 "J a v a"。
方法 1:使用循环和 StringBuilder (通用方法)
这是最灵活的方法,可以处理任意复杂的插入逻辑。
String original = "Programming";
StringBuilder sb = new StringBuilder(original);
// 在索引 3 的位置插入一个空格
// 注意:StringBuilder 的 insert 方法会在指定索引前插入
sb.insert(3, " ");
System.out.println(sb.toString()); // 输出: Pro gramming
// 另一个例子:在每个字符后插入空格
String text = "ABC";
StringBuilder spacedText = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
spacedText.append(text.charAt(i));
if (i < text.length() - 1) { // 在最后一个字符后不加空格
spacedText.append(" ");
}
}
System.out.println(spacedText.toString()); // 输出: A B C
方法 2:使用正则表达式 (简洁但可能难理解)
对于“在每个字符后插入空格”这种特定模式,正则表达式非常简洁。
import java.util.regex.Matcher; import java.util.regex.Pattern; String text = "Java"; // (?<=\w) 是一个正向后行断言,表示在任何一个“单词字符”后面 String regex = "(?<=\\w)"; // 用一个空格替换匹配到的位置(即字符后面的位置) String spacedText = text.replaceAll(regex, " "); System.out.println(spacedText); // 输出: J a v a
处理多个空格(规范化空格)
有时候字符串中可能包含多余的空格(如开头、或连续的多个空格),你可能需要将它们规范化为一个或没有空格。
方法:使用 replaceAll() 和正则表达式
String messyString = " Hello Java World! ";
// 1. 去掉开头和结尾的空格 (等同于 trim())
String trimmed = messyString.trim();
System.out.println("['" + trimmed + "']"); // 输出: ['Hello Java World!']
// 2. 将连续的多个空格替换为单个空格
String singleSpaced = messyString.replaceAll("\\s+", " ");
System.out.println("['" + singleSpaced + "']"); // 输出: [' Hello Java World! ']
// 3. 组合使用:去掉首尾空格,并将中间的多个空格合并为一个
String normalized = messyString.trim().replaceAll("\\s+", " ");
System.out.println("['" + normalized + "']"); // 输出: ['Hello Java World!']
正则表达式解释:
\\s:匹配任何空白字符,包括空格、制表符、换行符等。- 匹配前面的元素一次或多次。
\\s+:匹配一个或多个连续的空白字符。replaceAll("\\s+", " "):将所有连续的空白序列替换为单个空格。
总结与推荐
| 需求场景 | 推荐方法 | 示例 |
|---|---|---|
| 简单地在开头/结尾加空格 | 运算符 | " " + str |
| 在两个字符串之间加空格 | String.join() |
String.join(" ", s1, s2) |
| 在字符串特定位置插入空格 | StringBuilder.insert() |
sb.insert(index, " ") |
| 在所有字符后插入空格 | StringBuilder 循环 或 正则表达式 |
str.replaceAll("(?<=\\w)", " ") |
| 规范化多个空格 | replaceAll() + trim() |
str.trim().replaceAll("\\s+", " ") |
对于大多数日常开发, 运算符、String.join() 和 StringBuilder 是最常用且最高效的工具,正则表达式功能强大,但在简单场景下可能显得有些“杀鸡用牛刀”,且可读性稍差。
