1 字符串字面值
通过使用引号将字符串文本封装起来,就可以很容易获得String字面值。Groovy为表示字符串提供了数种不同的方式。举例来说,在Groovy中,可以使用单引号(')、双引号(”)或者三引号(”””)来封装字符串。而且,在Groovy中使用三引号表示的字符串可以包含多行文本。
使用单引号封装的字符串的值就是所列出的字符串本身。而另外种形式的字符串的值有可能会进一步被解释。任何包含在解释型字符串中的${expression_r}都将被求值。其结果是字符串的一部分。下面的范例说明了其效果:
正则匹配符号+数字结尾字符串def age = 25
'My age is ${age}'
"My age is ${age}"
"""My age is ${age}"""
"My age is \${age}
运行后可以看到,在第一个范例由于使用了单引号,${age}没有被解释。同样,在美元符号($)前使用了反斜线(\)转义字符后,也没有解释${age}。通用的原则是,只在字符串而需要被解释的时候使用双引号,在其他情况下字符串使用单引号。
2 字符串索引和索引段
字符串是顺序排列的字符集合,因此可以通过单个字符在字符串中的位置来获取该字符,这就是所说的索引(index)位置。请注意,可以使索引来指定单个字符或指定字符集合的位置;使用任一方式都能返回一个字符串值。字符串的索引从零开始,止于该字符串的长度值减一。Groovy同样也支持负数索引,但是其顺序是从字符串的末尾开始往前计算。子字符串通常可以用索引段(slicing)来表示。使用索引段可以提取字符串的子集。
下面是字符串对象greeting的索引和索引段范例:
def greeting = 'Hello world'
greeting[4]
greeting[-1]
greeting[1..2]
greeting[1..<3]
greeting[4..2]
greeting[4,1,6]
3 基本操作
基本的字符串操作包括两个字符串的合并、字符串的复制,以及字符串的长度。minus方法(或者重装运算符-)的作用是删除首次出现的子字符串。count方法统计某个子字符串出现的次数,而contains方则用来判断某个字符串是否包含指定的子字符串。下面是一些范例:
def greeting = 'Hello world'
'Hello' + 'world'
'Hello' * 3
greeting - 'o world'
greeting.size()
greeting.length()
unt('o')
ains('ell')
Groovy字符串是不可变的,它们在任何地方都不可能改变。可以通过索引、索引段以及合并其他字符串的方式创建一个新String对象。因此,greeting – 'o world'表达式演示了新String对象”Hell”的产生过程,但字符串对象greeting本身仍没有变化。
4 字符串方法
参见JDK和GDK文档。
5 比较字符串
Groovy支持String对象之间的比较方法。该操作是指定方法的重载版本。这样,在比较两个String对象时,就可以使用str1 == str2,这比使用str1.equals(str2)要方便得多。同样,str1<=>str2就代表str1pareTo(str2)。如果str1在str2之前,该方法返回值为-1,如果str1在str2之后,则返回值为+1;如果str1和str2相同,则返回值为0。这个方法通常被用来String对象排序的基础。下面是一些String比较的范例:
'ken'<=>'ken'
'ken'<=>'kenneth'
'ken'<=>'Ken'
'ken'pareTo('Ken')
6 正则表达式
正则表达式(regular expression_r)是在文本中寻子字符串的一种模式。从GDK文档中可以看出,String类提供多个允许使用正则表达式对String对象执行操作的方法。如果给定的正则表达式与String对象匹配,则matches方法返回true。
Groovy支持使用~”regex”来定义正则表达式。双引号中的文本表示正则表达式。通过下面的方法可以创建一个正则表达式:
def regex = ~”cheese”
在if语句或者while语句中,当Groovy操作符”=~”作为一个谓词(表达式返回一个布尔值)出现时,左边的操作数String对象将和右边的正则表达式匹配。
精确匹配符“==~”需要精确匹配。
在正则表达式中,有两个特殊的位置标识符(positional characters),它们是脱字符号(^)和美元符号($),分别表示某行的开始和结尾。
正则表达式同样也包含数量(quantifiers)。加符号(+)表示在表达式中位于它前面的字符出现一次或多次,星号(*)表示出现零次或多次。“{”和“}”用来匹配位于“{”符号之前指定次数的字符。
在正则表达式中,点符号(.)能代表任意字符,因而称其为通配符(wildcard character)。这样,在需要匹配一个实际的点字符的时候,事情就会变得非常复杂。
使用反斜杠字符时要加倍小心。在普通的String对象中出现时,通常被当作转义字符,因此“\\”表示单个的反斜杠字符。这样,在正则表达式中需要使用”\\\\”来表示一个反斜杠字符。使用四个反斜杠字符的方法通常会使人困惑不解。
正则表达式还可以包含字符类(character classes)。一组字符集可以通过使用[和]元字符(metacharacters)来表示。对于字符和数字,可以使用破折号分隔符。字符类的余数可以通过脱字符号来表示。
最后,可以通过组合正则表达式,生成更复杂的正则表达式。组合方式使用“(”和“)”元字符(metacharacters)。正则表达式“(ab)*”表示ab出现任意次。同样,也可以使用选择符(用!表示)来组合一个或者多个可能的正则表达式。正则表达式“(a|b)*”表示a、b或者ab混合出现任意次。
Groovy同样也支持使用“/”分隔符的模式,因此不需要重复所有的反斜线符号。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论