04Groovy語法(三)-----字串與正則
Groovy中的字串
a = ‘abc”DEF”’ //單引號與雙引號的巢狀(可以相互巢狀)
字串的操作
索引
def str = ‘GroovyIS a Good’
str[4]//同str.getAt(4) 輸出v
str[-1] //從後向前-1表示最後一個字元 輸出 d
str[1..2]// 範圍內的字元 輸出 ro
str[1..<3]// 範圍內的字元 輸出 ro
str[4..2]//取一個範圍內(倒序)的字元 輸出 voo
str[4,1,6]//取具體位置的字元 輸出 v r I
字串比較
str == ‘GroovyIS a Good’//輸出TRUE 注意:== 類似java中的equles方法
‘ab’ <=> ‘ab’ //0
‘ab’ <=> ‘abc’ //-1
‘ab’ <=> ‘a’ //1
‘ab’.compareTo( ‘Ab’) //32(a-A=32),返回第一不同的字元的差。
字串連線
‘abc’+’def’//’abcdef’
”’
abc
def
”’
‘Groovy’ * 3 //GroovyGroovyGroovy(三次連線)
‘Groovy’.concat(‘ABC’)//’GroovyABC’ 連線字串
str = ‘abc’
str<< ’ world’ //’abc world’
str.leftShift(’ world’)//’abc world’
獲取字串長度
str.length()
去除字串
str-‘Good’//’GroovyIS a ‘
獲取字串下標
‘Good’.indexOf(‘o’)//1
‘Good’.indexOf(‘o’,1)//2 從第2個字元開始往後,字元o的下標。
字串子串
‘Good’.substring(2)//od
‘Good’.substring(1,2)//o
指定字串寬度
def str = “Groovy”
str.center(11)//指定寬度為11,超過則空格填充,不夠則原樣輸出
str.center(11,”=”)//,超過則用”=”填充
是否包含某個字元
str.contains(‘Gr’)//true
字串的個數
str.count(‘oo’)//1
字串操作符
減法
str.minus(‘vy’)//Groo
str - ‘vy’//Groo
替換最後一個字元:
str.next()//Groovz 把最後一個字元換為,它的下一個字元
str.previous()//Groovx 把最後一個字元換為,它的前一個字元
指定長度和位置:左右
str.padLeft(4)// 原樣輸出[Groovy]
str.padLeft(11)//[ Groovy]//左邊空出空格,總的長度為11
str.padLeft(11,’E’)//[#####Groovy],總長為11,左邊5個#
字串替換
def str = “Groovy”
str.replaceAll(‘[a-z]’){ch -> ch.toUpperCase()}
反轉字串
str.reverse()
str.size()大小
字串轉換為其他的數值型別
str.toCharacter()//G
‘123’.toDouble()//其他類似
str.toList()//轉換為列表[‘G’,’r’,’o’,’o’,’v’,’y’]
分詞處理
def str = ‘ABC,def,ddd’
str.tokenlze()// 預設使用空格分詞 原樣輸出:’ABC,def,ddd’
str.tokenlze(‘,’) [‘ABC’,’def’,’ddd’]
正則表示式
正則表示式在Groovy中是本地語言支援。
定義正則表示式
def regx = ~’lxt’//~用於指定你一個模式
println regx.class//java.Util.regx.Pattern
//模式匹配
def mat = ‘lxt’ =~ ‘lxt’
println mat.class //java.util.regex.Matcher
assert !(‘lxt008’ ==~ ‘lxt’)//(==~)精確匹配
正則表示式元字元:
正則表示式輔助符號:
注意:在java和Groovy中把”\”作為轉義字元,所以一般我們使用”\”表示轉義符
‘2.4’ ==~ ‘\d\.\d’(轉義使用兩個斜槓)
例項:
def pattern = ‘([A-Z]{3})\s([0-9]{1,2}),\s([0-9]{4})’
date = ‘NOV 28 ,2008’
def matcher = date =~ date
matcher.matchers()//()
matcher[0]//[“NOV 28,2008”,”NOV”,”28”,”2008”] 內容為三個字串,因為patter中有三個(),即組
matcher[0][0]//NOV 28,2008
matcher[0][1]//NOV
matcher[0][2]//28
matcher[0][3]//2008