相關閱讀
【小家java】java5新特性(簡述十大新特性) 重要一躍
【小家java】java6新特性(簡述十大新特性) 雞肋更新
【小家java】java7新特性(簡述八大新特性) 不溫不火
【小家java】java8新特性(簡述十大新特性) 飽受贊譽
【小家java】java9新特性(簡述十大新特性) 褒貶不一
【小家java】java10新特性(簡述十大新特性) 小步疊代
【小家java】java11新特性(簡述八大新特性) 首個重磅LTS版本
每篇一句
天下沒有白吃的午餐,免費永遠是這個世界上最貴的東西
前言
上一篇博文已經講解了lang3下面的很多的API,但是StringUtils留在本文專門講解。因為這個工具類在日常使用中實在太多了。
本文的講解方式為:直接看執行個體,而不做過多的文字描述解釋
執行個體
public static boolean isEmpty(CharSequence cs)
這個可能用得是非常多的,null和空串都被定義為empty了喲
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false //注意這裡是false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
public static boolean isAnyEmpty(CharSequence… css)
任意一個參數為空的話,傳回true。如果這些參數都不為空的話傳回false。在寫一些判斷條件的時候,這個方法還是很實用的。
StringUtils.isAnyEmpty(null) = true
StringUtils.isAnyEmpty(null, "foo") = true
StringUtils.isAnyEmpty("", "bar") = true
StringUtils.isAnyEmpty("bob", "") = true
StringUtils.isAnyEmpty(" bob ", null) = true
StringUtils.isAnyEmpty(" ", "bar") = false //注意這個是false哦
StringUtils.isAnyEmpty("foo", "bar") = false
public static boolean isNoneEmpty(CharSequence… css) 和isAnyEmpty取返
public static boolean isBlank(CharSequence cs)
判斷字元對象是不是空字元串,注意與isEmpty的差別。相當于深度的isEmpty
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true //注意此處是null哦 這和isEmpty不一樣的
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
isAnyBlank、isNoneBlank這裡就不再解釋了
public static String trim(String str)
移除字元串兩端的空字元串,制表符char <= 32如:\n \t 如果為null傳回null
StringUtils.trim(null) = null
StringUtils.trim("") = ""
StringUtils.trim(" ") = ""
StringUtils.trim("abc") = "abc"
StringUtils.trim(" abc ") = "abc"
變體有如下:
public static String trimToNull(String str) //如果是null就傳回null,否則trim之後傳回
public static String trimToEmpty(String str)
public static int ordinalIndexOf(CharSequence str, CharSequence searchStr,int ordinal)
這個方法有時候會很有用的。字元串在另外一個字元串裡,出現第Ordinal次的位置
StringUtils.ordinalIndexOf("aabaabaa", "a", 1) = 0
StringUtils.ordinalIndexOf("aabaabaa", "a", 2) = 1
StringUtils.ordinalIndexOf("aabaabaa", "b", 1) = 2
StringUtils.ordinalIndexOf("aabaabaa", "b", 2) = 5
StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4
StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0 //空串永遠通路0
StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0 //空串永遠通路0
對應的有:lastOrdinalIndexOf方法
public static boolean containsAny(CharSequence cs,char… searchChars)
是否包含後面數組中的任意對象,傳回true(和List裡的containsAll有點像)
StringUtils.containsAny(null, *) = false
StringUtils.containsAny("", *) = false
StringUtils.containsAny(*, null) = false
StringUtils.containsAny(*, []) = false
StringUtils.containsAny("zzabyycdxx",['z','a']) = true
StringUtils.containsAny("zzabyycdxx",['b','y']) = true
StringUtils.containsAny("aba", ['z']) = false
public static String substring(String str,int start)
這個系列有的時候很有用,特别是下面的衍生方法:
//從左邊開始截取指定個數
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)
public static String join(T… elements)、public static String join(Object[] array,char separator)
預設使用空串Join
StringUtils.join(null) = null
StringUtils.join([]) = ""
StringUtils.join([null]) = ""
StringUtils.join(["a", "b", "c"]) = "abc"
StringUtils.join([null, "", "a"]) = "a"
自定義符号:特定字元串連接配接數組,很多情況下還是蠻實用,不用自己取拼字元串
StringUtils.join(null, *) = null
StringUtils.join([], *) = ""
StringUtils.join([null], *) = ""
StringUtils.join(["a", "b", "c"], ';') = "a;b;c"
StringUtils.join(["a", "b", "c"], null) = "abc"
StringUtils.join([null, "", "a"], ';') = ";;a" //注意這裡和上面的差別
public static String deleteWhitespace(String str)
删除空格 這個方法還挺管用的。比trim給力
StringUtils.deleteWhitespace(null) = null
StringUtils.deleteWhitespace("") = ""
StringUtils.deleteWhitespace("abc") = "abc"
StringUtils.deleteWhitespace(" ab c ") = "abc"
public static String removeStart(String str,String remove)
删除以特定字元串開頭的字元串,如果沒有的話,就不删除。
這個方法有時候很管用啊
StringUtils.removeStart(null, *) = null
StringUtils.removeStart("", *) = ""
StringUtils.removeStart(*, null) = *
StringUtils.removeStart("www.domain.com", "www.") = "domain.com"
StringUtils.removeStart("domain.com", "www.") = "domain.com"
StringUtils.removeStart("www.domain.com", "domain") = "www.domain.com" //注意這個結果喲 并沒有删除任何東西
StringUtils.removeStart("abc", "") = "abc"
public static String rightPad(String str,int size,char padChar)
這個方法還是蠻管用的。對于生成統一長度的字元串的時候。
比如生成訂單号,為了保證長度統一,可以右邊自動用指定的字元補全至指定長度
StringUtils.rightPad(null, *, *) = null
StringUtils.rightPad("", 3, 'z') = "zzz"
StringUtils.rightPad("bat", 3, 'z') = "bat"
StringUtils.rightPad("bat", 5, 'z') = "batzz"
StringUtils.rightPad("bat", 1, 'z') = "bat"
StringUtils.rightPad("bat", -1, 'z') = "bat"
對應的:leftPad 左邊自動補全
public static String center(String str,int size)
将字元串擴充到指定的長度。把主體放在中間,兩邊自動用空串補齊
StringUtils.center(null, *) = null
StringUtils.center("", 4) = " "
StringUtils.center("ab", -1) = "ab"
StringUtils.center("ab", 4) = " ab "
StringUtils.center("abcd", 2) = "abcd"
StringUtils.center("a", 4) = " a "
public static String capitalize(String str)、uncapitalize
首字母大、小寫
public static String swapCase(String str)
去返大小寫 大變小 小變大
StringUtils.swapCase(null) = null
StringUtils.swapCase("") = ""
StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
public static boolean isAlpha(CharSequence cs)
判斷字元串是否全由字母組成 (隻要存在漢字、中文、數字都為false)
StringUtils.isAlpha(null) = false
StringUtils.isAlpha("") = false
StringUtils.isAlpha(" ") = false
StringUtils.isAlpha("abc") = true
StringUtils.isAlpha("ab2c") = false
StringUtils.isAlpha("ab-c") = false
public static String reverse(String str)
字元串翻轉
StringUtils.reverse(null) = null
StringUtils.reverse("") = ""
StringUtils.reverse("bat") = "tab"
public static String abbreviate(String str,int maxWidth)
縮略字元串,省略号要占三位。maxWith小于3位會報錯。
這個在大篇幅需要顯示的時候,很管用有木有
StringUtils.abbreviate(null, *) = null
StringUtils.abbreviate("", 4) = ""
StringUtils.abbreviate("abcdefg", 6) = "abc..."
StringUtils.abbreviate("abcdefg", 7) = "abcdefg"
StringUtils.abbreviate("abcdefg", 8) = "abcdefg"
StringUtils.abbreviate("abcdefg", 4) = "a..."
StringUtils.abbreviate("abcdefg", 3) = IllegalArgumentException
進階用法:可以自定義縮略的部分内容角标
public static String wrap(String str,char wrapWith)
包裝,用後面的字元串對前面的字元串進行包裝
其實相當于前後拼了相同的串
StringUtils.wrap(null, *) = null
StringUtils.wrap("", *) = ""
StringUtils.wrap("ab", '\0') = "ab"
StringUtils.wrap("ab", 'x') = "xabx"
StringUtils.wrap("ab", '\'') = "'ab'"
StringUtils.wrap("\"ab\"", '\"') = "\"\"ab\"\""
isAllBlank、isAllEmpty
這些都不解釋了。處理數組可變參數而已
isAllLowerCase、isAllUpperCase
判斷字元串所有字元是否都是大、小寫
關注A哥
Author | A哥(YourBatman) |
---|---|
個人站點 | www.yourbatman.cn |
[email protected] | |
微 信 | fsx641385712 |
| |
公衆号 | BAT的烏托邦(ID:BAT-utopia) |
知識星球 | BAT的烏托邦 |
每日文章推薦 | 每日文章推薦 |