bug001_字符串替换的注意事项

package com.jingsong.test;

import org.apache.commons.lang3.StringUtils;

/**
 * @author jingsong
 * @date 2022/4/23 23:23
 */
public class StringBug {
    public static void main(String[] args) {
        /*
            bug简单复盘
                如strCheck()中,需要对某些字符串进行转换
         */
        String check = strCheck("hehedada");
        System.out.println("check = " + check);// 预期为hahahoho,实际是hahadada

        /*
            原因:
                由于strCheck中第一个if()首先对hehe进行转换,
                导致第二个if()始终无法进入,
                导致strCheck方法失效。
            解决:
                1. 交换两个if()的位置,首先校验 hehedada
                2. 尽量避免出现此类需要字符串替换的情况,即使出现也应减少需要替换的场景
            总结:
                不是很复杂的一个bug,但是不好排查,主要是因为打断点的时候直接跳跃放行。
                以后打断点的时候出现异常情况,尽量在自己的代码里面一步步的走。
         */

    }


    private static String strCheck(String str){
        if (str.contains("hehe")){
            str = StringUtils.replace(str, "hehe", "haha");
        }

        if (str.contains("hehedada")){
            str = StringUtils.replace(str,"hehedada","hahahoho");
        }
        return str;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值