StringUtils

org.apache.commons.lang3.StringUtils

lang3是Apache Commons 团队发布的工具包,要求jdk版本在1.5以上,相对于 org.apache.commons.lang.StringUtils 来说完全支持java5的特性,废除了一些旧的API。该版本无法兼容旧有版本,于是为了避免冲突改名为lang3。

 

  • 字符串非空 / 为空判定
StringUtils.isNotEmpty(" "); // true
StringUtils.isNotBlank(" "); // false

StringUtils.isEmpty(" "); //false
StringUtils.isBlank(" "); //true

所以如果不希望字符串非空判断被空格干扰,最好用isNotBlank()方法。 

  • 去除两端空格操作
StringUtils.trim()    去掉字符串两端的空字符,如果输入为null则返回null。
StringUtils.trimToNull()    去掉字符串两端的空字符,如果输入null或"",则返回null
StringUtils.trimToEmpty()   去掉字符串两端的空字符,如果输入null或"",则返回""
  • 去除字符串中的所有空格
StringUtils.deleteWhitespace("   ab  c  ") = "abc"
  • 比较两个字符串是否相等,如果两个均为空则也认为相等。
StringUtils.equals(String str1, String str2);
// equalsAny方法比较字符串与给定的数组中的任何一个字符串相等就返回true
StringUtils.equalsAny(String str1, CharSequence[] char);
StringUtils.equalsAny(String str1, String str2 , String str3...);
// 比较两个字符串是否相等并且忽略大小写
StringUtils.equalsIgnoreCase(String str1, String str2);
  • 移除字符串中匹配部分,仅当匹配部分位于起始或结束位置
StringUtils.removeStart("www.domain.com", "www.")   = "domain.com"
StringUtils.removeStart("www.domain.com", "domain") = "www.domain.com"
StringUtils.removeStartIgnoreCase("www.domain.com", "WWW.")   = "domain.com"
StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
StringUtils.removeEnd("www.domain.com", "domain") = "www.domain.com"
StringUtils.removeEndIgnoreCase("www.domain.com", ".com")   = "www.domain"
  • 移除字符串中所有匹配部分
StringUtils.remove("queued", "ue") = "qd"
  • 字符串匹配查找
StringUtils.indexOf(String str, char searchChar); 

返回字符 searchChar 在字符串 str 中第一次出现的位置。
如果 searchChar 没有在 str 中出现则返回-1,
如果 str 为 null 或 "" ,则也返回-1
StringUtils.indexOf(String str, char searchChar, int startPos);

返回字符 searchChar 从 startPos 开始在字符串 str 中第一次出现的位置。
如果从 startPos 开始 searchChar 没有在 str 中出现则返回-1,
如果 str 为 null 或 "" ,则也返回-1
StringUtils.indexOf(String str, String searchStr); 

返回字符串 searchStr 在字符串 str 中第一次出现的位置。
如果 str 为 null 或 searchStr 为 null 则返回-1,
如果 searchStr 为 "" ,且 str 为不为 null ,则返回0,
如果 searchStr 不在 str 中,则返回-1
StringUtils.ordinalIndexOf(String str, String searchStr, int ordinal);

返回字符串 searchStr 在字符串 str 中第 ordinal 次出现的位置。
如果 str=null 或 searchStr=null 或 ordinal<=0 则返回-1
StringUtils.indexOf(String str, String searchStr, int startPos)
返回字符串 searchStr 在字符串 str 中第 ordinal 次出现的位置。
如果 str=null 或 searchStr=null 或 ordinal<=0 则返回-1
基本原理同上
StringUtils.lastIndexOf(String str, char searchChar);
StringUtils.lastIndexOf(String str, char searchChar, int startPos);
StringUtils.lastIndexOf(String str, String searchStr);
StringUtils.lastIndexOf(String str, String searchStr, int startPos);
  • 字符串包含判断
StringUtils.contains(String str, String searchStr);
StringUtils.containsIgnoreCase(String str,String searchStr);
str是原始字符串,searchStr是待搜索的字符串,此方法是检查字符串str中是否包含字符串searchStr,如果str为null,则返回false。
  • 字符串拼接
public static String join(Object[] array, String separator)

代码: 

StringUtils.join("speak",",");  = "speak,"
StringUtils.join(["a", "b", "c"]) = "abc"
StringUtils.join(["a", "b", "c"], ';')  = "a;b;c"

String[] strs={"I","love","chinese","family"};
System.out.println(StringUtils.join(strs,",")); // I,love,chinese,family

List<String> list=new ArrayList<>();
list.add("I");
list.add("love");
list.add("chinese");
list.add("family");
System.out.println(StringUtils.join(list,",")); //I,love,chinese,family
  • 字符串截取(根据长度)
截取字符串左边指定长度的字符串
public static String left(String str, int len)
截取字符串右边指定长度的字符串
public static String right(String str, int len)
截取字符串从指定下标到指定长度之间的字符串
public static String mid(String str, int pos, int len)

代码:

StringUtils.left("abc", 0)   = ""
StringUtils.left("abc", 2)   = "ab"
StringUtils.left("abc", 4)   = "abc"

StringUtils.right("abc", 0)   = ""
StringUtils.right("abc", 2)   = "bc"
StringUtils.right("abc", 4)   = "abc"

StringUtils.mid("abc", 0, 2)   = "ab"
StringUtils.mid("abc", 0, 4)   = "abc"
StringUtils.mid("abc", 2, 4)   = "c"
StringUtils.mid("abc", 4, 2)   = ""
StringUtils.mid("abc", -2, 2)  = "ab"
  • 字符串截取(截取指定字符串之前 / 之后的内容 
截取指定字符串之前的内容
public static String substringBefore(String str, String separator)
截取指定字符串之后的内容
public static String substringAfter(String str, String separator)
截取指定字符串最后一次出现之前的子字符串
public static String substringBeforeLast(String str, String separator)
截取指定字符串最后一次出现之后的子字符串
public static String substringAfterLast(String str, String separator)
截取嵌套在同一字符串的两个实例之间的子字符串
public static String substringBetween(String str, String tag)
截取嵌套在两个字符串之间的子字符串,仅返回第一个匹配项
public static String substringBetween(String str, String open, String close)
截取嵌套在两个字符串之间的子字符串,所有匹配项组合一个字符串数组中
public static String[] substringsBetween(String str, String open, String close)

代码:

StringUtils.substringBefore("abc", "a")   = ""
StringUtils.substringBefore("abcba", "b") = "a"
StringUtils.substringBefore("abc", "c")   = "ab"
StringUtils.substringBefore("abc", "d")   = "abc"

StringUtils.substringAfter("abc", "a")   = "bc"
StringUtils.substringAfter("abcba", "b") = "cba"
StringUtils.substringAfter("abc", "c")   = ""
StringUtils.substringAfter("abc", "d")   = ""

StringUtils.substringBeforeLast("abcba", "b") = "abc"
StringUtils.substringBeforeLast("abc", "c")   = "ab"
StringUtils.substringBeforeLast("a", "a")     = ""
StringUtils.substringBeforeLast("a", "z")     = "a"

StringUtils.substringAfterLast("abc", "a")   = "bc"
StringUtils.substringAfterLast("abcba", "b") = "a"
StringUtils.substringAfterLast("abc", "c")   = ""
StringUtils.substringAfterLast("a", "a")     = ""
StringUtils.substringAfterLast("a", "z")     = ""

StringUtils.substringBetween("", "tag")          = null
StringUtils.substringBetween("tagabctag", null)  = null
StringUtils.substringBetween("tagabctag", "")    = ""
StringUtils.substringBetween("tagabctag", "tag") = "abc"

StringUtils.substringBetween("wx[b]yz", "[", "]") = "b"
StringUtils.substringBetween("yabcz", "y", "z")   = "abc"
StringUtils.substringBetween("yabczyabcz", "y", "z")   = "abc"

StringUtils.substringsBetween("[a][b][c]", "[", "]") = ["a","b","c"]
StringUtils.substringsBetween("", "[", "]")          = []
  • 字符串拆分
使用空格作为分隔符将字符串拆分为数组
public static String[] split(String str)
使用指定字符串作为分隔符将字符串拆分为数组
public static String[] split(String str, String separatorChars)
将指定字符串拆分为具有指定长度的数组
public static String[] split(String str, String separatorChars, int max)

代码:

StringUtils.split(null)       = null
StringUtils.split("")         = []
StringUtils.split("abc def")  = ["abc", "def"]
StringUtils.split("abc  def") = ["abc", "def"]
StringUtils.split(" abc ")    = ["abc"]

StringUtils.split(null, *)         = null
StringUtils.split("", *)           = []
StringUtils.split("a.b.c", '.')    = ["a", "b", "c"]
StringUtils.split("a..b.c", '.')   = ["a", "b", "c"]
StringUtils.split("a:b:c", '.')    = ["a:b:c"]
StringUtils.split("a b c", ' ')    = ["a", "b", "c"]

StringUtils.split(null, *, *)            = null
StringUtils.split("", *, *)              = []
StringUtils.split("ab de fg", null, 0)   = ["ab", "cd", "ef"]
StringUtils.split("ab   de fg", null, 0) = ["ab", "cd", "ef"]
StringUtils.split("ab:cd:ef", ":", 0)    = ["ab", "cd", "ef"]
StringUtils.split("ab:cd:ef", ":", 2)    = ["ab", "cd:ef"]
  • 字符串替换(根据字符匹配)
字符串替换,仅匹配一次
public static String replaceOnce(String text, String searchString, String replacement)
字符串替换,匹配所有
public static String replace(String text, String searchString, String replacement)
字符串替换,指定匹配次数
public static String replace(String text, String searchString, String replacement, int max)
按数组顺序匹配分别替换
public static String replaceEach(String text, String[] searchList, String[] replacementList)

代码:

StringUtils.replaceOnce("aba", "a", "")    = "ba"
StringUtils.replaceOnce("aba", "a", "z")   = "zba"

StringUtils.replace("aba", "a", "")    = "b"
StringUtils.replace("aba", "a", "z")   = "zbz"

StringUtils.replace("abaa", "a", "z", 1)   = "zbaa"
StringUtils.replace("abaa", "a", "z", 2)   = "zbza"

StringUtils.replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"w", "t"})  = "wcte"
StringUtils.replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"d", "t"})  = "dcte"
  •  字符串替换(根据索引位置
public static String overlay(String str, String overlay, int start, int end)

代码:

在指定位置进行字符序列替换,从start索引处开始(包含)到end-1索引处为止进行替换
StringUtils.overlay("abcdef", "zzzz", 2, 4)); // abzzzzef
起始索引start为负数,这时start会被当作0处理
StringUtils.overlay("abcdef", "zzzz", -1, 2)); // abcdzz
StringUtils.overlay("abcdef", "zzzz", -2, -3)); // zzzzabcdef
起始索引start小于结束索引end,这时会将end作为起始索引,start作为结束索引
StringUtils.overlay("abcdef", "zzzz", 4, 2)); // abzzzzef
结束索引end大于原始字符串的长度,这时end会被当作原始字符串长度处理
StringUtils.overlay("abcdef", "zzzz", 8, 10)); // abcdefzzzz
  • 字符串重复
StringUtils.repeat("a", 3)  = "aaa"
StringUtils.repeat("ab", 2) = "abab"
重复一个字符串repeat次以形成一个新的字符串,每次都注入一个separator。
public static String repeat(String str, String separator, int repeat)
StringUtils.repeat("", "x", 3)    = "xxx"
StringUtils.repeat("?", ", ", 3)  = "?, ?, ?"
  • 字符串填充
StringUtils.rightPad("bat", 3)  = "bat"
StringUtils.rightPad("bat", 5)  = "bat  "
StringUtils.rightPad("bat", 8, "yz")  = "batyzyzy"
StringUtils.rightPad("bat", 1, "yz")  = "bat"
StringUtils.leftPad("bat", 5)  = "  bat"
StringUtils.leftPad("bat", -1, "yz") = "bat"
StringUtils.leftPad("bat", 1, "yz")  = "bat"
  • 判断是否仅包含数字
StringUtils.isNumeric("123")  = true
StringUtils.isNumeric("12 3") = false
StringUtils.isNumeric("ab2c") = false
  • 判断是否仅包含空格
StringUtils.isWhitespace(null)   = false
StringUtils.isWhitespace("")     = true
StringUtils.isWhitespace("  ")   = true
StringUtils.isWhitespace("abc")  = false
  •  字符串null值替换
返回传入的String,如果String是null,则返回一个空字符串
public static String defaultString(String str)
返回传入的String,如果String是null,则返回defaultStr的值
public static String defaultString(String str, String defaultStr)
返回传入的字符串,如果字符串是空格,空("")或null,则返回defaultStr的值
public static <T extends CharSequence> T defaultIfBlank(T str, T defaultStr)
返回传入的字符串,如果字符串是空("")或null,则返回defaultStr的值
public static <T extends CharSequence> T defaultIfEmpty(T str, T defaultStr)

代码: 

StringUtils.defaultString(null)  = ""
StringUtils.defaultString("")    = ""
StringUtils.defaultString("bat") = "bat"

StringUtils.defaultString(null, "NULL")  = "NULL"
StringUtils.defaultString("", "NULL")    = ""
StringUtils.defaultString("bat", "NULL") = "bat"

StringUtils.defaultIfBlank(null, "NULL")  = "NULL"
StringUtils.defaultIfBlank("", "NULL")    = "NULL"
StringUtils.defaultIfBlank(" ", "NULL")   = "NULL"
StringUtils.defaultIfBlank("bat", "NULL") = "bat"

StringUtils.defaultIfEmpty("", "NULL")    = "NULL"
StringUtils.defaultIfEmpty(" ", "NULL")   = " "
  • 反转字符串
StringUtils.reverse("bat") = "tab"
  • 字符串比较不同
比较两个字符串,并返回它们不同的部分。
更确切地说,返回第二个String的其余部分,从它与第一个字符串的不同开始
public static String difference(String str1, String str2)
比较两个CharSequences,并返回CharSequences开始不同的索引
public static int indexOfDifference(CharSequence cs1, CharSequence cs2)

代码:

StringUtils.difference(null, null) = null
StringUtils.difference("", "") = ""
StringUtils.difference("", "abc") = "abc"
StringUtils.difference("abc", "") = ""
StringUtils.difference("abc", "abc") = ""
StringUtils.difference("ab", "abxyz") = "xyz"
StringUtils.difference("abcde", "abxyz") = "xyz"

StringUtils.indexOfDifference("abc", "abc") = -1
StringUtils.indexOfDifference("ab", "abxyz") = 2
StringUtils.indexOfDifference("abcde", "abxyz") = 2
  • 判断字符串是否以指定字符串起始或结尾
StringUtils.startsWith("abcdef", "abc") = true
StringUtils.startsWithIgnoreCase("ABCDEF", "abc") = true
StringUtils.startsWithAny("abcxyz", new String[] {null, "xyz", "abc"}) = true
StringUtils.endsWith("abcdef", "def") = true
StringUtils.endsWithIgnoreCase("ABCDEF", "def") = true
StringUtils.endsWithAny("abcxyz", new String[] {null, "xyz", "abc"}) = true

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mephisto180502

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值