StringUtils使用与源码分析
在apache的lang3包中有个StringUtils工具类,该工具类为开发中常用的字符串处理工具类
非空判断,isBlank和isEmpty
这俩方法的形参都是charSequence字符序列。
isEmpty判断这个字符序列是否为null,还有长度是否为0,如果是,则返回true,反之返回false
isBlank在isEmpty之上还有一个,如果长度长度大于0,则循环判断里面的每个字符(charSequence.charAt(int i))去判断字符里是否包含空格字符,也就是Character的isWhiteSpace方法判断,如果包含,则返回false代表非空,如果都是空格字符,则返回true代表为空。
字符串拼接,左拼接leftPad和右拼接rightPad
内部实现的核心逻辑都是String的concat方法,将多余出来的长度通过Arrays.fill方法组装成一个char数组,再强转成String,之后再根据左右去调用concat方法。
大写小转化,lowerCase和upperCase
内部使用String的toLowerCase和toUpperCase实现。
remove、replace
核心逻辑就是StringBuilder的append方法和String的indexof方法。
remove:new一个StringBuilder,通过String的indexof和要被移除的字符串长度判断截断的起始位置,截断这一段字符串后,通过while循环判断截断后的字符串里是否还有当前需要被移除的字符串,依旧还是indexof判断。
repalce:在以上的逻辑上加上一段截断一次后再append相应的需要替换的字符。
reverse
StringBuilder的reverse方法倒序输出字符串。
contains
String的indexof方法。
将列表转String,join
while循环迭代器Iterator.hasNext方法实现,通过StringBuilder.append拼接列表里的元素,包括分隔符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?