groovy 字符串截取,groovy string
在绝妙的中使用字符串-51至15岁.计算机输出缩微胶片
在绝妙的中使用字符串奇妙的世界博客我要评论(0) 字号:T T本文介绍了绝妙的的数据类型和控制结构中的字符串太棒了。支持两种类型字符串:一般的爪哇字符串,以及GStrings。本文的例子中详细解释了两种字符串各自的用法公元51年云计算架构师峰会抢票进行中!
绝妙的支持两种类型字符串:一般的爪哇字符串,它是java.lang.String的实例;和GStrings,它是groovy.lang.GString的实例,并且允许文本中包含占位符GStrings并不是线的子类,因为线类是最终类(最后一堂课)不能被继承。然而,GString与一般的字符串一样,因为绝妙的能将GStrings转型为爪哇字符串。
GString适用于编写模板代码(模板化),因为您必须动态构建字符串(gstring在需要动态构建字符串的模板化情况下很有用).以下的清单给出了一个例子。
使用GStrings:
firstWord=Hello
secondWord=dlroW
正在打印$第一个单词$ {第二个单词。reverse()}
结果如下:
编译
GStrings不同于爪哇字符串在于它们允许以${.}的语法嵌入变量。如果一个字符串由双引号或三重引号括起来,并且包含一个非转义符(未转义)$,它必定是groovy.lang.GString的一个实例;否则,就是java.lang.String的一个实例。
${.}里可以包含任意有效的绝妙的表达式,包括方法调用或变量名。只有调用GString的转换对象为字符串方法时(例如,把结果输出到控制台),${.}表达式才被求值。
绝妙的支持的另一种字符串便是java.lang.String。然而,GDK还是动态注入许多帮助方法,使其易于应用。
以下的例子展示了在绝妙的中声明一个字符串的不同方式:
S1= Hello world //转义双引号,转义双引号
s2=你好,世界
资产1==s2
S3= Hello \ World \ //Escapesinglequotes,转义单引号
s4=你好,世界
资产3==s4
assertnewString( hello world )== hello world
defs=[h , e , l , l , o]aschar[]
assertnewString(s)==hello
assertnewString(s,0,4)==hell
s.eachWithIndex{ch,index- assertch==s[index]}
断言"你好"。toCharArray()==[h , e , l , l , o]
常用的转义符:
断言\t==\011//Tab,Tab键
assert\n==\012//Newline,换行符
断言 \ r == \ 015 //Carrie return,回车
断言\n==
//Spanningmultiplelines,跨越多行
对象的字符串表示:
defobject=newObject()
assertstring。(对象)==对象的值。tostring()//对象
assertstring。(true)==true的值。tostring()//布尔值
assertString.valueOf(a)==a .toString()//字符
assertstring。(1)的值==1。tostring()//数字
assertString.valueOf([a:1,b:2])==[a:1,b:2].toString()//集合
字符串长度:
你好,世界
asserts.size()==11
asserts.size()==s.length()
填充(垫)字符串:
断言"你好"。padRight(7, *)==Hello**
断言"你好"。padLeft(7, *)==**Hello
断言"你好"。center(9, *)==**Hello**
分解字符串:
s= quickbrownfoxjumpsoverthelazydog
asserts.tokenize()==[The , quick , brown , fox , jumps , over , The , lazy , dog]
资产。token ize()==newstring tokenizer .收集{它}
s1=快速*棕色*狐狸*跳过*懒惰*狗
asserts1.tokenize(,*)==s.tokenize()
查询字符串:
alphabets=newString(a .zaschar[])
assertalphabets。find { it f }= g //找到的第一个
assertalphabets。查找全部{ it f }== g .z//ALlfound
assertalphabets。findindexof { it f }==字母表。索引( g )
assertalphabets.every{it A}
assertalphabets.any{it c}
assertalphabets。以( ABC )开头
assertalphabets.endsWith(xyz )
assertalphabets.contains(def )
assertalphabets。的索引( c )==2
assertalphabets。( d )==字母表的索引。lastindexof( d )
assertalphabets.count(a)==1
替换字符串:
你好
asserts.replace(H , Y)==Yello
asserts.replace(l , p)==Heppo
字符串反转:
镜子
asserts.reverse()==rorrim
字符串操作符:
断言hello world - l = helo world //减法器satmostonel
断言(今天是星期天-星期日).trim()==今天
断言hello * 2== hellohello
defempty=[]
断言美国广播公司.每个{清空它== abc
断言美国广播公司.next()==abd
断言美国广播公司.previous()==abb
下标操作符:
断言"你好"[1]=="e "
断言“你好”[2.]你好. size()-1]==llo
断言"你好"[0,2,4]=="hlo "
断言"你好"[-4,-2]=="El "
字符串比较:
断言" a "和" b "
断言“一个”“一个”
断言a .compareTo(b)==-1
断言a .comparetignorecase( A )==0
寻找最大值和最小值:
Collections.max(abcdeF ).toList())==e
assertCollections.max(abcdeF ).toList(),字符串 CASE _ INSENSITIVE _ ORDER)= F
assertCollections.min([abc , abd , abe])==abc
assertCollections.min([Abc , aBd , abE],字符串. CASE _ INSENSITIVE _ ORDER)= Abc
字符串缓冲器和StringBuilders是可变的,允许字符串改变StringBuilder不是线程安全的,因此处理速度要比字符串缓冲器快。
defsb=new string buffer( hello world )
assertsb。tostring()== hello world
某人长度=5
assertsb.toString()==你好
assertsb.substring(0,2)==He
//使用,追加(字符串)或左移(字符串)到appendtoastringbuffer .
//使用toappendtoastringbufferwillreturnstring
sb=newStringBuffer(Hello )
Java中的assertsb“World”。郎。线
Java中的assertsb“World”。郎。字符串缓冲区
assertsb。tostring()==( hello world )
assertsb.append(,Groovyrocks ).toString()==HelloWorld,Groovyrocks
assertsb.leftShift(."不是吗,").toString()==HelloWorld,Groovyrocks .不是吗?
您也可以对字符串缓冲器或StringBuilder使用下标,如:
sb=newStringBuffer(abcdefg )
assertsb[0]==a
资产b[2.4]==cde
断言b[0].class==String
资产b[-6].-4]==bcd
sb[0].2]=xyz
assertsb.toString()==xyzdefg
操作字符串缓冲区:
sb=new string buffer( StringBuffersaremutable )
某人(somebody的简写)删除(某人)。的索引(是可变的),sb.size())
assertsb。tostring()==字符串缓冲区
sb.insert(sb.size(), aremutable )
assertsb。tostring()== StringBuffersaremutable
某人(somebody的简写)取代(某人)。“字符串缓冲区”的索引.size(), StringBuilders )
assertsb。tostring()== StringBuildersaremutable
defstring=newString(sb)
定义字符串2=字符串。全部替换(“字符串生成器”、“字符串缓冲区”)
assertstring 2== StringBuffersaremutable
正如您看到的,GDK在java.lang.String和java.lang.StringBuilder基础上添加了很多实用的方法。前面的例子只讨论部分方法,因此推荐您查看线的应用程序接口文档,http://groovy.codehaus.org/groovy-jdk/java/lang/String.html;StringBuffer,http://groovy。科德豪斯。JDK/Java/lang/string buffer。htmlStringBuilder,http://groovy。科德豪斯。org/groovy-JDK/Java/lang/StringBuilder。html。
在绝妙的中使用字符串时,需要注意以下几点:
与爪哇一样太棒了中的字符串也是不可变的(即只读的)。欲改变字符串值需使用字符串缓冲器或StringBuilder。
绝妙的中,如果字符串如果由单引号括起来,或者由双引号或三重引号括起来但没有非转义的美元符号($),那么该字符串是java.lang.String的一个实例。您可使用爪哇岛开发工具包中任意字符串方法。另外,GDK动态注入额外的实用方法到线类。
由于绝妙的会自动转型为线类,您可以在任何时候使用GStrings。
字符串可被单引号,双引号或者三重引号括起来。其中,三重引号可直接跨越数行并且输出中仍包含回车符、制表符和空格符。
绝妙的使用大小方法来查询一个字符串,字符串缓冲区或StringBuilder的长度,与查询一个集合的长度相统一。
某些字符串方法接受闭包,它明确说明需要满足的条件,例如,查找,查找所有,查找索引的,每和任何。这些方法都是由金东康动态注入到java.lang.Object中的。
您可以使用收集,每个或者eachwithinindex方法遍历字符串,而且这些方法也属于java.lang.Object的一部分。
您可以在字符串上使用运算符。运算符“”完成字符串联接;"-"最多删除右操作数的一个实例;" * "根据给定的数字复制字符串;实现下一个字符串的最后一个字节递增;Previous实现要递减的字符串的最后一个字节。
可以对Strings、StringBuffers和StringBuilders使用下标操作符,也可以在下标操作符中使用范围和负索引(即索引可以是负的,从右开始计数)。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。