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拼接列表里的元素,包括分隔符

posted @ 2024-02-16 14:51  leviH  阅读(5)  评论(0编辑  收藏  举报