You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何仅替换字符串中特定位置的子串?

解决Java中替换字符串特定位置字符的问题

Java里的String是不可变类型,无法直接修改单个位置的字符,你可以用以下两种实用方法实现需求:

方法一:使用StringBuilder(推荐)

StringBuilder是专门用于字符串修改的可变字符序列,操作效率更高:

String str = "gallbladder";
StringBuilder sb = new StringBuilder(str);
// 替换索引1处的字符为'o'
sb.setCharAt(1, 'o');
String result = sb.toString();
System.out.println(result); // 输出:gollbladder

操作步骤:

  • 将原字符串转为StringBuilder对象
  • 调用setCharAt(int index, char ch)方法,指定目标索引和新字符
  • 最后转回String类型得到结果

方法二:字符串截取拼接

利用substring方法拆分原字符串,再拼接新字符:

String str = "gallbladder";
// 截取索引0到1(不含1)的部分 + 新字符 + 截取索引2到末尾的部分
String result = str.substring(0, 1) + 'o' + str.substring(2);
System.out.println(result); // 输出:gollbladder

注意:substring(int beginIndex, int endIndex)的endIndex是不包含的,所以要截取到目标索引的前一位,再拼接新字符和剩余部分。

为什么replace方法不适用?

你用到的str.replace("a","o")和str.replace(str.charAt(1),"o")都会替换所有匹配的字符:

  • replace(CharSequence target, CharSequence replacement):替换字符串中所有匹配的子串
  • replace(char oldChar, char newChar):替换字符串中所有匹配的单个字符
    这两个方法没有指定位置的参数,所以会把所有'a'都替换成'o',不符合你只改特定位置的需求。

内容的提问来源于stack exchange,提问作者Bernoulli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:47:03