3.3 字符串
![](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
![](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
![](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
3.3.1 字符串的常用定义方式
(1)单引号定义方式
(2)双引号定义方式
**(3)三引号定义方式
package com.msb.test01
//单引号形式定义字符串:等价于Java中双引号的定义方式:
def str1 = 'hi groo\nvy1'
println str1
println str1.class //class java.lang.String
//双引号形式定义字符串:
def str2 = "hi groovy2"
println str2
println str2.class //class java.lang.String
//三引号形式定义字符串:
def str3 = '''hi groovy3'''
println str3
println str3.class //class java.lang.String
//三种方式区别在哪里:
//用单引号形式定义字符串,那么字符串的格式需要自己去控制,比如加:转义字符
//用三引号的形式,我们可以直接在字符串中定义格式:
//如果想要写的形式和展示形式一样,可以在第一个三引号后加入\
def str4 = '''\
hi
groovy4'''
println str4
//双引号形式的字符串:可扩展字符串:
def str5 = "groovy5"
def str6 = "hi ${str5}" //拼接变量
println str6 //hi groovy5
println str6.class //class org.codehaus.groovy.runtime.GStringImpl
//拼接表达式:可扩展表达式融入到字符串中去
def str7 = "100 + 100 = ${100 + 100}"
println str7
println str7.class
//总结:双引号形式定义用的最多 - 因为可扩展特性
//String和GString使用的时候不用互相转化:
//验证:
def str8 = test(str6)//GString类型作为实参传入test方法中,返回String类型
println str8
println str8.class
//定义方法:
String test(String s){
return s
}
![](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
3.3.2 字符串的常用方法
**(1)可直接使用java.lang.String中的方法:
```
package com.msb.test01
def str1 = "higroovy"
println "字符串的长度为:" + str1.length()
println "字符串是否为空:" + str1.isEmpty()
println "获取字符串的下标对应的字符为:" + str1.charAt(2)
def str2 = "higroovy"
println "判断两个字符串是否相等:" + str1.equals(str2)
println "字符串从固定位置截取:" + str1.substring(3)
println "字符串从区间位置截取:" + str1.substring(2,4)
println "替换字符串为新字符串:" + str1.replace('o', 'O')
def str3 = "a-b-c-d-e-f"
def split = str3.split("-")
println "按照指定的字符串进行分裂为数组的形式:" + split
def str4 = "higroovy"
println "转大写字母:" + str4.toUpperCase()
println "转小写字母:" + str4.toUpperCase().toLowerCase()
def str5 = " hi groovy "
println "去除收尾空格:" + str5.trim()
def str6 = "a"
def str7 = "b"
println "字符串的比较:" + str6.compareTo(str7)
```
**(2)使用org.codehaus.groovy.runtime.StringGroovyMethods中方法:**
```
package com.msb.test01
def str1 = "higroovy"
println "以str1字符串为中心在两侧用空格进行填充为指定长度:" + str1.center(12)
println "以str1字符串为中心在两侧用字符a进行填充为指定长度:" + str1.center(12,'a')
println "在str1的左侧进行填充:" + str1.padLeft(10,'a')
def str2 = "hellogroovy"
def str3 = "groovy"
println "减法操作:去掉重复内容:" + str2.minus(str3)
def str4 = "higroovy"
println "字符串的逆转/倒叙:"+ str4.reverse()
println "首字母大写" + str4.capitalize()
def str5 = "123"
println "类型的转换:" + str5.toInteger().class
```
![](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
**(3)Groovy中新增的操作符
//操作符-进行比较
def str6 = "a"
def str7 = "b"
println str6 > str7 //false
//操作符:获取字符串指定下标上的字符:
def str8 = "groovy"
println str8[1]
println str8[2..3] //oo
//操作:减法操作:
def str9 = "hellogroovy"
def str10 = "groovy"
println str9 - str10
![](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202302/2531222-20230223103126473-431914203.gif)