在 Java 字符串指定位置插入字符或子串
在 Java 中,没有直接的方法可以在字符串的指定位置插入字符或子串,因为字符串是不可变的,但可以通过以下几种方法实现:

方法1:使用 StringBuilder 或 StringBuffer
public class StringInsertExample {
public static void main(String[] args) {
String original = "HelloWorld";
int position = 5; // 在位置5插入
StringBuilder sb = new StringBuilder(original);
sb.insert(position, " ");
String result = sb.toString();
System.out.println(result); // 输出: Hello World
}
}
方法2:使用字符串拼接
public class StringInsertExample {
public static void main(String[] args) {
String original = "HelloWorld";
int position = 5;
String toInsert = " ";
String result = original.substring(0, position) +
toInsert +
original.substring(position);
System.out.println(result); // 输出: Hello World
}
}
方法3:使用 Apache Commons Lang 库
如果你可以使用第三方库,Apache Commons Lang 提供了 StringUtils.overlay() 方法:
import org.apache.commons.lang3.StringUtils;
public class StringInsertExample {
public static void main(String[] args) {
String original = "HelloWorld";
int position = 5;
String toInsert = " ";
String result = StringUtils.overlay(original, toInsert, position, position);
System.out.println(result); // 输出: Hello World
}
}
方法4:插入多个字符或复杂字符串
public class StringInsertExample {
public static void main(String[] args) {
String original = "The quick brown fox";
int position = 9;
String toInsert = "fast ";
String result = original.substring(0, position) +
toInsert +
original.substring(position);
System.out.println(result); // 输出: The quick fast brown fox
}
}
注意事项
- 字符串索引从0开始
- 插入位置不能超过字符串长度(否则会抛出异常)
- 对于频繁的字符串操作,使用
StringBuilder或StringBuffer更高效 - 如果需要线程安全,使用
StringBuffer;否则使用StringBuilder
选择哪种方法取决于你的具体需求和项目环境,对于简单的插入操作,方法1或方法2就足够了。

