如何仅替换Java字符串指定位置的特定字符
问题原因
你代码中调用的String.replace("3", "9")会替换字符串中所有出现的"3"子串,因此会修改其他位置的'3'字符,不符合仅修改第3位的要求。
修复方案
Java中String是不可变类,无法直接修改指定位置的字符,推荐以下两种实现方式:
方式1:转为字符数组修改后转回字符串
String adana = "123456789133"; if (adana.length() > 2 && adana.charAt(2) == '3'){ char[] charArray = adana.toCharArray(); // 仅修改索引为2的位置(对应第3位字符) charArray[2] = '9'; final String newText = new String(charArray); Log.d("TAG", "onCreate: " + newText); }
方式2:使用substring拼接生成新字符串
String adana = "123456789133"; if (adana.length() > 2 && adana.charAt(2) == '3'){ // 取前2位字符 + 替换后的9 + 第4位开始的剩余字符 final String newText = adana.substring(0,2) + "9" + adana.substring(3); Log.d("TAG", "onCreate: " + newText); }
两种实现都只会修改索引为2的位置的字符,不会影响其他位置的'3'。
内容的提问来源于stack exchange,提问作者DijanDar
相关产品推荐
相关产品推荐

