读源码:commons-lang2.4的StringUtils类

StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,组合,反转,增删空白,去掉非法字符,简单判断等等操作

代码内容:

常量

首先,定义了三个常量:

public static final String EMPTY = "";
public static final int INDEX_NOT_FOUND = -1;
private static final int PAD_LIMIT = 8192;

第三个常量:某些方法可以用字符来填充字符串,此常量表示可以填充的最大个数(2^13)。

boolean isEmpty(String str)

boolean isEmpty(String str):返回字符串是否为空。如果 str为null 或者 str的长度为0,返回true。这个判断我以前经常自己写,用这个方法简单明了,还不用别人猜,提倡多用。boolean isNotEmpty(String str)就是isEmpty方法取反,不再赘述。

boolean isBlank(String str)

boolean isBlank(String str):判断字符串是否是空白字符,在isEmpty判断的基础上加上了如果是空格之类的字符,也返回true。StringUtils.isBlank(” “) 为 true。boolean isNotBlank(String str)同理,isBlank方法取反,不再赘述。同时我测试了这些转义字符:

System.out.println(StringUtils.isBlank("\n"));//true    换行
System.out.println(StringUtils.isBlank("\t"));//true    相当于tab
System.out.println(StringUtils.isBlank("\r"));//true    回车
System.out.println(StringUtils.isBlank("\b"));//false   退格
System.out.println(StringUtils.isBlank("\f"));//true    换页

String trim(String str)

String trim(String str):移除字符两侧的控制字符(指的是ascii码小于等于32的字符,32是空格的ascii对应值),如果str是null,则直接返回null。String trimToNull(String str)和String trimToEmpty(String str)指的是trim完了如果是空字符串,返回null或者”“。

String strip(String str)

String strip(String str),String stripToNull(String str),String stripToEmpty(String str)可以理解为和上面的trim效果一样。String strip(String str, String stripChars),则表示删掉str两侧的stripChars,String stripStart(String str, String stripChars),String stripEnd(String str, String stripChars)则表示只删掉前或后的对应字符。String[] stripAll(String[] strs, String stripChars)则是替换字符串数组中的tripChars,String[] stripAll(String[] strs)则是用替换掉字符串数组的空白字符。

boolean equals(String str1, String str2)

boolean equals(String str1, String str2),boolean equalsIgnoreCase(String str1, String str2):顾名思义,判断两个字符串是否一样,后者忽略掉大小写。

indexOf系列

int indexOf(String str, char searchChar):返回str第一个字符的位置。searchChar换成String同理
int indexOf(String str, char searchChar, int startPos):从startPos开始数,返回str第一个字符的位置。searchChar换成String同理
lastIndexOf系列同理
int ordinalIndexOf(String str, String searchStr, int ordinal):返回按照序数数的位置,比如:StringUtils.ordinalIndexOf(“aabaabaa”, “a”, 1) = 0,序数ordinal从1开始算起。
boolean contains(String str, char/String search):是否包含search,实现方式就是判断indexOf方法返回值是否大于-1即可。containsIgnoreCase则忽略大小写
int indexOfAny(String str, char[]/String searchChars):返回searchChars中任意一个字符所在str中的第一次出现的位置。同理,containsAny就是用了本方法作为调用。
int indexOfAnyBut(String str, char[]/String searchChars):返回第一个不是searchChars中的某一个字符的位置。
boolean containsOnly(String str, char[]/String valid):str的字符是否全为valid的字符
boolean containsNone(String str, char[] invalidChars):str与invalidChars是否不存在交集。
int indexOfAny(String str, String[] searchStrs):str中包含任意一个searchStrs的第一个位置。lastIndexOfAny同理可推。

Substring系列

String substring(String str, int start):返回子字符串,包含start及之后。
String substring(String str, int start, int end):返回子字符串,包含start不包含end。
String left(String str, int len):获取字符左起多少个字符
String right(String str, int len):获取字符右起多少个字符
String mid(String str, int pos, int len):获取中间多少个字符,pos是开始位置,len是获取长度
String substringBefore(String str, String separator):str中第一个separator之前的字符串。substringAfter、substringBeforeLast、substringAfterLast同理。
String substringBetween(String str, String open, String close):返回以open与close之间的的字符串。String substringBetween(String str, String tag) tag即同时为open于close,String[] substringsBetween(String str, String open, String close)可以返回多个符合匹配条件的字符串数组。

Split系列

String[] split(String str):默认使用空格分割字符串
String[] split(String str, char/String separatorChar):用separatorChar来分割str
String[] split(String str, String separatorChars, int max):max指最大分割多少个
String[] splitByWholeSeparator(String str, String separator):通过字符串来分割str,与split只能以一个字符分割是不同的。

Join系列

String join(Object[] array):将字符串数组连接起来成为一个字符串
String join(Object[] array, char separator):使用separator来连接字符串
String join(Iterator iterator, char separator)、String join(Collection collection, char separator):注意也可以将Iterator 和Collection 来组成字符串

String deleteWhitespace(String str)

String deleteWhitespace(String str):删除str中的空格

Remove系列

String removeStart(String str, String remove):仅仅移除以remove开头的str的内容,removeStartIgnoreCase忽略大小写
String removeEnd(String str, String remove):仅仅删除以remove结尾的str的内容,removeEndIgnoreCase同理
String remove(String str, String remove):删除str中的所有remove内容

Replace系列

String replaceOnce(String text, String searchString, String replacement):将text中的searchString替换为replacement,只替换第一个匹配的
String replace(String text, String searchString, String replacement, int max):同上不过max可以定义匹配替换的最大次数。不加max则默认为全部替换
String replaceEach(String text, String[] searchList, String[] replacementList):替换对应的string数组的的值,searchList[0]的替换为replacementList[0],searchList[1]的替换为replacementList[1]以此类推。
String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList):在上一个基础上可以重复替换,举个例子:StringUtils.replaceEach(“abcde”, new String[]{“ab”, “d”}, new String[]{“d”, “t”}) = “dcte” ,而 StringUtils.replaceEachRepeatedly(“abcde”, new String[]{“ab”, “d”}, new String[]{“d”, “t”}) = “tcte”
replaceChars和replace大同小异,就是针对char写的而已。

String overlay(String str, String overlay, int start, int end)

String overlay(String str, String overlay, int start, int end):覆盖字符串,将str的start到end用overlay来覆盖掉

Chomp&Chop系列

String chomp(String str):默认去掉末尾的换行符
String chomp(String str, String separator):将str末尾的separator换掉
String chop(String str):移除最后一位字符
String repeat(String str, int repeat):将str重复repeat次

填充系列

String rightPad(String str, int size):右填充,用空格填充,size是总长度,当str比size长时不会截断str的。
String rightPad(String str, int size, char/String padChar):右填充,用padChar来填充的
leftPad同上
center也和上面差不多,举例:StringUtils.center(“ab”, 4) = ” ab ” StringUtils.center(“a”, 4) = ” a “

大小写转换系列

String upperCase(String str):大写
String lowerCase(String str):小写
String capitalize(String str):首字母大写
String uncapitalize(String str):首字母小写
String swapCase(String str):大写转小写,小写转大写

int countMatches(String str, String sub)

int countMatches(String str, String sub):计算匹配的次数

判断字母数字空格系列

boolean isAlpha(String str):判断是否是纯字母
boolean isAlphaSpace(String str):判断是否是字母和空格
boolean isAlphanumeric(String str):判断是否是字母和数字
boolean isAlphanumericSpace(String str):字母数字空格
boolean isAsciiPrintable(String str):判断是否只包含ascii可打印字符
boolean isNumeric(String str):是否是纯数字
boolean isNumericSpace(String str):是否是数字空格
boolean isWhitespace(String str):是否是空格
这些判断更具体的可以参考commons-validator包,更全更细致

default默认字符串系列

defaultString(String str):如果是null,转换为默认的空字符串””
String defaultString(String str, String defaultStr):将null用defaultStr代替
String defaultIfEmpty(String str, String defaultStr):空字符串和null用defaultStr代替

Reverse系列

String reverse(String str):反转字符串
String reverseDelimited(String str, char separatorChar):先用separatorChar分割字符串,然后反转并用separatorChar再连接起来

String abbreviate(String str, int maxWidth) 省略号

String abbreviate(String str, int maxWidth):省略,将maxWidth最后三位置为省略号,三个.,举例:StringUtils.abbreviate(“abcdefg”, 6) = “abc…”

difference系列

String difference(String str1, String str2):str2比起str1不同的地方
int indexOfDifference(String str1, String str2):返回的不同的开始的序号
int indexOfDifference(String[] strs):返回多个str开始不同的序号,完全相同返回 -1

String getCommonPrefix(String[] strs)

String getCommonPrefix(String[] strs):获取strs相同的部分,再详细看

int getLevenshteinDistance(String s, String t) 获取编辑距离

int getLevenshteinDistance(String s, String t):获取两个字符由一个转成另一个所需的最少编辑操作次数,可用的操作有:替换、插入、删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。 编辑距离

开始结束判断系列

boolean startsWith(String str, String prefix):判断str是否是以prefix开始的,startsWithIgnoreCase忽略大小写
boolean endsWith(String str, String suffix):同上,endsWithIgnoreCase同上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值