在上一篇中总结了StringUtils工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法。
一、截取
StringUtils中常用的截取字符串的方法如下:
substring(String str,int start)
substring(String str,int start, int end)
substringAfter(String str,String separator)
substringAfterLast(String str,String separator)
substringBefore(String str,String separator)
substringBeforeLast(String str,String separator)
substringBetween(String str,String tag)
需要注意的是,截取字符串时,若被截取的字符串为null或"",则截取之后的返回的字符串也为null和""。
(1)根据指定位置截取字符串,当指定的截取位置为非负数时,则从左往右开始截取,第一位为0,后面依次类推,但当索引值为负数时,则从右往左截取,注意此时右侧第一位为-1:
a)只指定了起始位置,则截取至字符串末尾:
StringUtils.substring(null, 2); // "" null和""截取后都返回null和""
StringUtils.substring(null, 2); // null
StringUtils.substring("china", 0); // china 指定的起始截取位置为0,则从第一位开始截取,也就是不截取
StringUtils.substring("china", 2); // ina 指定的截取位置为2,则从左往右第三位开始截取
StringUtils.substring("china", -2); // na 指定的截取位置为-2,则从右往左第二位开始截取
b)指定了起始位置和结束位置,则从起始位置开始截取到结束位置(但不包含结束位置):
StringUtils.substring(null, 2, 4); // null null和""截取后都返回null和""
StringUtils.substring("", 2, 4); // ""
StringUtils.substring("china", 0, 0); // ""
StringUtils.substring("china", 2, 4); // in
StringUtils.substring("china", -2, -4); // in
StringUtils.substring("china", 2, -3); // ""
StringUtils.substring("china", 2, -1); // in
(2)根据指定的分隔符进行截取(不包含该分隔符):
a)从分隔符第一次出现的位置向后截取:
StringUtils.substringAfter("china", "i"); // na 从第一次出现"i"的位置向后截取,不包含第一次出现的"i"
StringUtils.substringAfter("china", "hi"); // na
StringUtils.substringAfter("chinachina","h")); // inachina
StringUtils.substringAfter("china", "a"); // ""
StringUtils.substringAfter("china", "d"); // "" 分隔符在要截取的字符串中不存在,则返回""
StringUtils.substringAfter("china", "")); // china 分隔符为"",则返回原字符串
Stringtils.substringAfter("china", null); // "" 分隔符为null,则返回""
b)从分隔符最后一次出现的位置向后截取:
StringUtils.substringAfterLast("china", "i"); // na
StringUtils.substringAfterLast("chinachina", "i"); // na "i"最后出现的位置向后截取
c)从分隔符第一次出现的位置向前截取:
StringUtils.substringBefore("china", "i"); // ch
StringUtils.substringBefore("chinachina", "i"); // ch 从"i"第一次出现的位置向前截取
d)从分隔符最后一次出现的位置向前截取:
StringUtils.substringBeforeLast("china", "i");
StringUtils.substringBeforeLast("chinachina", "i"); // chinach
e)截取指定标记字符串之间的字符序列:
StringUtils.substringBetween(null, "ch") // null
StringUtils.substringBetween("", "") // ""
StringUtils.substringBetween("tagabctag", "") // "" 标记字符串为"",则截取后返回""
StringUtils.substringBetween("", "tag") // null // 注意此处返回的是null
StringUtils.substringBetween("tagabctag", null) // null 标记字符串为null,则截取后返回null
StringUtils.subst