1. 程式人生 > >04Groovy語法(三)-----字串與正則

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