Groovy Tip 10 Groovy语言对String的简化操作
在Groovy语言中,对String对象的操作就像操作List对象一样的方便。比如我们在Java语言中,对String对象的操作用得比较多的是substring方法。如下:
String str =
"abcdefg"
;
System.
out
.println(str.substring(1,3));
结果为:
bc
这里有两点不便:一是
substring
方法和参数的繁琐;二是它的最后一个参数,比如
substring(1,3)
得到的结果不是
str
对象的第一位到第三位,而是第二位。这和我们的直觉不符,常常导致我们出错。
而在
Groovy
语言里,上面的代码被改造为下面的样子:
def
str =
'abcdefg'
println
str[
1
..
2
]
结果为:
bc
看到了吧,像数组一样操作
String
对象,
str[1..2]
得到的就是第一位到第二位的值,符合我们的习惯。
当然,你还可以取
String
对象中的任意字符:
def
str =
'abcdefg'
println
str[
1
,
3
,
5
]
结果是:
bdf
很棒吧!
既然操作
String
对象就像操作
List
对象一样,那么
List
类的一些方法如
each
等
String
对象就可以直接拿来使用了。
def
str =
'abcdefg'
str.
each
{
print
it
print
','
}
结果为:
a,b,c,d,e,f,g,
def
str =
'abcdefg'
println
str.contains(
'd'
)
结果为:
true
等等。其他方法,如“
find
”、“
findAll
”、“
every
”、“
any
”等方法都可以在
String
对象中使用。
如果你不喜欢
str
对象后面的“
fg
”两个字符,想把他们从
str
对象中删掉,在
Java
语言中,你必须这样做:
String str =
"abcdefg"
;
str = str.substring(0,5);
System.
out
.println(str);
而在
Groovy
语言中,你可以这样做:
def
str =
'abcdefg'
str = str-
'fg'
println
str
当然,你也可以把
str
对象中的“
ab
”减去:
def
str =
'abcdefg'
str = str-
'ab'
println
str
结果为:
cdefg
如果在
str
对象中减去“
st
”呢:
def
str =
'abcdefg'
str = str-
'st'
println
str
结果为:
abcdefg
如果在
str
对象中减去“
be
”呢:
def
str =
'abcdefg'
str = str-
'be'
println
str
结果为:
abcdefg