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;
}
}
bug001_字符串替换的注意事项
于 2022-04-23 23:45:32 首次发布