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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值