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
相关产品推荐
相关产品推荐

