apache-commons學習之StringUtils
今天開始學習commons類,從最常用的StringUtils類開始。StringUtils是String類的擴充套件類,它裡面提供的所有方法均為靜態方法,變數均為靜態變數,可知呼叫這個類的方法並不需要例項化物件。這也是一般工具類的通用做法
介紹方法前先糾個錯,看了不少部落格裡說StringUtils的isEmpty方法和isBlank方法的不同點是當引數為“”(空)時,isEmpty返回值為false,isBlank返回的是true,但其實他們返回的結果都是true,下面具體說一下方法
1. isEmpty()
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
由上面的結果可以看出 只有為null和“” 才是empty的。其他的都是非empty的。
類似的方法有:
a.isAnyEmpty 與isEmpty方法判斷相同,引數可傳多個,各引數間的判斷是或的關係,若有empty則為true,為null或空的array時也為true
b.isNotEmpty 與isEmpty方法相反
c.isNoneEmpty 與isAnyEmpty方法判斷相反,引數可傳多個,各引數間的判斷是或的關係,若無empty則為true
2.isBlank()
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
由上面的結果可以看出blank的意思是為null 或是""," "的空字串,與isEmpty的唯一區別就是把空字串也包含在blank中,所以可以把empty看做blank看做empty的子集。是empty的一定是blank。
類似的方法有:
a.isAnyBlank 與isBlank判斷相同,引數可傳多個,若有為blank則返回true,陣列為null或者空則返回true
b.isNotBlank與isBlank結果相反不為blank則返回結果為true
c.isNoneBlank與isAmyBlank判斷相反,引數可傳多個,若沒有blank則返回true
3.trim()
StringUtils.trim(null) = null
StringUtils.trim("") = ""
StringUtils.trim(" ") = ""
StringUtils.trim("abc") = "abc"
StringUtils.trim(" abc ") = "abc"
StringUtils.trim(" a b c ") = "a b c"
可看作String類中trim增強版,若引數為null則返回null否則去頭和尾的空格
類似的方法有:
a.trimToNull,若為null 或空字串則返回null否則去頭去尾空格
b.trimToEmpty若為null 或空字串則返回""否則去頭去尾空格
4.strip
StringUtils.strip(null) = null
StringUtils.strip("") = ""
StringUtils.strip(" ") = ""
StringUtils.strip("abc") = "abc"
StringUtils.strip(" abc") = "abc"
StringUtils.strip("abc ") = "abc"
StringUtils.strip(" abc ") = "abc"
StringUtils.strip(" ab c ") = "ab c"
從例子可以看出,若為null返回null若空字串返回“”否則去頭去尾空格
類似的方法有:
a.stripToNull 若為null或空字串,返回null 否則去頭尾空格
b.stripToEmpty 若為null或空字串,返回""否則去頭去尾空格
c.strip(Str a,Str b),與strip方法為過載關係,表示a去掉頭尾b後返回,若為null或“”則返回對應的null或“”若為“ ”空字串則與其他相同,去頭去尾
d.stripEnd(Str,Str),去尾,null或“”則直接返回原值
e.stripAll(Str[]),按順序返回Str[],若為null或空則返回 null或空,否則去頭去尾空格
f.stripAll(Str[] a,Str b) stripAll的過載方法,表示a去掉b後返回。
g.stripAccents?,簡單看了下叫做重音替換,隨後嘗試了下使用,結果和示例提供結果不一致,待有時間繼續瞭解,這裡先記一筆
5.equals(Str a,Str b)
若a,b中有一個為null則返回false,否則可以理解為呼叫String方法的equals對比
類似方法:
a.equalsIgnoreCase與equals方法的唯一區別是不區分大小寫
6.indexOf(Str a,int b)
計算b第一次在a中出現的位置,從0開始計數,a若為null或“”或是在a中找不到b則返回-1
類似方法有:
a.indexOf(Str a ,int b, int c) a中 c+1起b出現的位置,找不到則返回-1,c超出則返回-1,a為空或是null則返回-1
b.indexOf(Str a , Str b) a中b出現的位置(第一個字母的位置),從0開始計數 a或b為null則返回-1
c.indexOf(Str a,Str b, int c) 從c+1起b出現在a中的位置判斷與上方法基本相同
d.ordinalIndexOf(Str a,Str b,int c)返回b在a中的第c次出現的位置,若無則返回-1若a或b為null則返回-1。
e.indexOfIgnoreCase(Str a,Str b)返回b在a中的位置,忽略大小寫,若其中為null則返回-1若找不到則返回-1
f.indexOfIgnoreCase(Str a,Str b,int c)從c+1開始返回b在a中的位置,忽略大小寫,與前一方法基本相同
7.lastIndexOf(Str a,int b)
b最後一次在a中出現的位置,從0開始計數,a若為null或“”或是在a中找不到b則返回-1
類似的方法有:
a.indexOf(Str a,int b,int c) a中 c+1位之後b最後出現的位置,找不到則返回-1,c超出則返回-1,a為空或是null則返回-1
b.lastIndexOf(Str a,Str b)a中b最後一次出現的位置(第一個字母的位置),從0開始計數 a或b為null則返回-1
c.lastOrdinalIndexOf(Str a,Str b,int c) 返回b在a中的第c次後最後出現的位置,若第c次即為最後一次,則返回第一次出現的位置。若無則返回-1若a或b為null則返回-1。
--------------------------------------------------------還沒寫完,有空繼續------------------------------------------------------------------