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