【转】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类的一些方法如eachString对象就可以直接拿来使用了。
     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
 
如果在str对象中减去“cd”呢:
     def str = 'abcdefgcd'
     
     str = str-'cd'
     
 println str
 
结果为:
abefgcd//只减去第一个出现的
posted @ 2012-10-23 09:59  BaronZ  阅读(1332)  评论(0编辑  收藏  举报