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":

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值