java中如何真正的实现替换最后一个字符(包括有相同字符的情况)

一.之前在写代码的时候有一个替换最后一个字符的需要,开始使用了如下方法:

 

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=”abgdgfa”:

    原文作者:码龙-
    原文地址: https://blog.csdn.net/weixin_42433094/article/details/105834543
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞