1. 程式人生 > >apache-commons學習之StringUtils

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。

--------------------------------------------------------還沒寫完,有空繼續------------------------------------------------------------------