标签:fse case nal 前言 span 自带 方法 final oem
StringUtils是处理字符串的工具类, String类实现CharSequence接口,为兼容不同实现类,StringUtils在处理字符串的传参为CharSequence类型
判定是否为空,包括是否为null,空串,空格字符串等,同时传参时区分单一参数与不定长参数集,其中empty结尾的函数校验null和空串,blank加上了对于空格字符串一类的无意义字符串的校验.
StringUtils.trim(final String str){} 字符串修建函数trim()在String类自带trim函数的基础上,新增了对于null的支持,传参为null返回null,非空字符串的操作即去除首尾空格的一般操作,并基于此衍生除两个函数trimToNull -- 空串返回null 和 trimToEmpty -- null返回空串.
截取函数truncate基于String类的substring方法实现,变更了传参逻辑,String类的substring函数传参起始索引与终止索引,StringUtils工具类的truncate函数则传参根字符串/起始索引(偏移量)/截取长度,更多了一种截取选择,适应不同的使用场景,源码如下:
public static String truncate(final String str, final int offset, final int maxWidth) { if (offset < 0) { throw new IllegalArgumentException("offset cannot be negative"); } if (maxWidth < 0) { throw new IllegalArgumentException("maxWith cannot be negative"); } if (str == null) { return null; } if (offset > str.length()) { return EMPTY; } if (str.length() > maxWidth) { final int ix = offset + maxWidth > str.length() ? str.length() : offset + maxWidth; return str.substring(offset, ix); } return str.substring(offset); }
strip函数与trim函数同属于字符串修剪方法实现, 不同在于trim处理字符串,strip可以对具体字符进行首尾的修剪,核心还是String类的substring函数,核心代码位于stripStart和stripEnd函数.
public static String stripStart(final String str, final String stripChars) { int strLen; if (str == null || (strLen = str.length()) == 0) { return str; } int start = 0; if (stripChars == null) { while (start != strLen && Character.isWhitespace(str.charAt(start))) { start++; } } else if (stripChars.isEmpty()) { return str; } else { while (start != strLen && stripChars.indexOf(str.charAt(start)) != INDEX_NOT_FOUND) { start++; } } return str.substring(start); }
public static String stripEnd(final String str, final String stripChars) { int end; if (str == null || (end = str.length()) == 0) { return str; } if (stripChars == null) { while (end != 0 && Character.isWhitespace(str.charAt(end - 1))) { end--; } } else if (stripChars.isEmpty()) { return str; } else { while (end != 0 && stripChars.indexOf(str.charAt(end - 1)) != INDEX_NOT_FOUND) { end--; } } return str.substring(0, end); }
比较字符串是否相等,核心是CharSequenceUtils.regionMatch函数,逐字符比较,可区分大小写,出现不同即返回,包括equals和equalsIgnoreCase两种实现,以及拓展的对于不定长参数集equalsAny/equalsAnyIgnoreCase的支持.
比较两个字符串,可区分大小写,核心逻辑为String.compareTo函数, 比较编码大小,返回第一个不同的差值,相同则返回0,整体业务逻辑类似equals,同时包含对于空参的支持,具体实现为compare和compareIgnoreCase
获取字符串中子串索引,核心逻辑为CharSequenceUtils.indexOf(seq, searchChar, startPos)函数,此处包含场景比较多,包括从字符串起始位置/指定位置,顺序查找/逆序查找,简列如下:
indexOf(final CharSequence seq, final int searchChar / final CharSequence serchSeq)
-- 获取字符(编号)位于字符串起始开始的第一个位置索引
indexOf(final CharSequence seq, final int searchChar / final CHarSequence searchSeq, final int startPos)
-- 获取字符(编号)位于字符串指定起始位置开始的第一个位置索引
字符串参数间的包含关系
apache-commons-lang3之StringUtils使用集锦
标签:fse case nal 前言 span 自带 方法 final oem
原文地址:https://www.cnblogs.com/nyatom/p/12401418.html