在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