在Java中,字符串大多數使用java.lang.String類型處理,在Groovy中提供了一些途徑是字符串工作更加容易
1Gstring
在groovy中,字符串能出現在單引號或者雙引號中,在雙引號的字符串中可以使用占位符,占位符在必要的時候將自動解析,這是個GString類型
def nick='Groovy' def book='Groovy in action' assert "$nick is $book"=="Groovy is Groovy in action" assert "${nick} is ${book}"=="Groovy is Groovy in action"
println "$nick is $book"
println "${nick} is ${book}"
Results: Groovy is Groovy in action
Groovy is Groovy in action
在groovy中,可以使用‘’‘(三個單引號) 或者“”“(三個雙引號)表示多行字符串,如
def single='''Hello,
Synvata''' //單引號
def mul="""Hello,
Synvata"""//雙引號
println single
println mul
每一種表示法的目的都是為了使文本內容最小化,每一個表示法都有一個和其他表示法不一樣的屬性:
- 單引號所表示的字符串不會按照GString的類型來處理內容,這等價於java的字符串;
- 雙引號表示的意思與單引號表示的意思是等價的。如果字符串內容中包括沒有被轉義的$符號,那么它被加工成GString實例,GString更詳細的信息將在下節介紹;
- 三組引號(或者是多行字符串)允許字符串的內容在多行出現,新的行總是被轉換為“\n”,其他所有的空白字符都被完整的按照文本原樣保留,多行字符串也許是一個GString實例,這根據是使用單引號或者多雙引號而定,多行字符串事實上像Ruby或者Perl中的HERE-document。
- “/”表示的字符串,指明字符串內容不轉義反斜杠“\”,這在正則表達式的使用中特別有用,就象后面看到的那樣,只有在一個反斜杠接下來是一個字符u的時候才需要進行轉義——這稍微有點麻煩,因為\u用來表示一個unicode轉義。
2 StringBuffer
在groovy中修改字符串,可以使用StringBuffer!在StringBuffer中,可以使用<<操作符追加文本和下標操作符進行文本替換,在一個字符串上使用<<操作符將返回一個StringBuffer
def greeting="Hello" greeting<<= ' Groovy' greeting<<'!' println greeting greeting[1..4] = 'i' println greeting println (greeting instanceof java.lang.StringBuffer)
Results:
Hello Groovy!
Hi Groovy!
true
