一.之前在写代码的时候有一个替换最后一个字符的需要,开始使用了如下方法:
str=str.replace(str.charAt(str.length-1)+””,”新字符”);
- 例如:
- String str=”abcdefg”
- str=str.replace(str.charAt(str.length-1)+””,”a”);
- 结果输出为:str=”abcdefa”:
但是发现当字符串中有重复相同的字符时,这个时候是会将所有与最后一个字符相同的字符都替换:
- 例如:
- String str=”abgdgfg”
- str=str.replace(str.charAt(str.length-1)+””,”a”);
- 结果输出为:str=”abadafa”:
原因是replace(”参数一”,”参数二”)方法中的两个参数分别为:
参数一:oldchar,将被替换的字符
参数二:newchar,替换的字符
str.charAt(str.length-1)+””这个参数是找到了最后一字符“是什么”,然后把和这个字符相同的字符都替换了
二.使用了下面的方法仅仅替换最后一个字符:
String str="abgdgfg" String newChar = "a"; if (StringUtils.isNotBlank(newChar)) { StringBuilder sb = new StringBuilder(str); //replace(参数1,参数2,参数3),参数1为要替换的开始位置,参数2为要替换的结束位置,参数3为替换内容 sb.replace(string.length() - 1, string.length(), newChar); str=sb.toString }
结果输出为:str=”abgdgf
a”: