这篇来学习String, 在Groovy中String是一个数据类型,在Java中String是一个对象。这篇很重要,实际开发中,百分之50以上的代码都和字符串处理有关。可以这么说,你字符串操作越熟悉,你实现业务代码就更快,特别是在CI CD pipeline代码中。
1.字符串拼接
这个代码中使用场景非常多,程序员最喜欢的输出语句就要用到这个。在Groovy中实现字符串拼接有好几个方法,来看看这段代码。
package com.anthony.test
def name = "Anthony"
println name
println "My name is " + name
println "My name is ".concat(name)
println "My name is ${name}"
输出结果
Anthony
My name is Anthony
My name is Anthony
My name is Anthony
2.多行字符串表示
package com.anthony.test
def s1 = """这是Groovy编程语言教程
我们正在学习
String的基本使用"""
println s1
如果我们需要某一些文字多行输出,我们使用""xxxx""",特别是保持原样格式输出。
当然也可以这样写
package com.anthony.test
def s1 = '''这是Groovy编程语言教程
我们正在学习
String的基本使用'''
println s1
3.字符串索引和长度
package com.anthony.test
def name = "Anthony"
println name.length() // 7
println name[2] //t
再举例一个索引相关的方法
package com.anthony.test
def name = "11.13.19.01.0"
// 我只想得到11.13.19.01,怎么做
println name.substring(0, name.lastIndexOf("."));
这个获取子串的方法是最优秀的代码,当然还有其他思路,例如直接substring(0,11), 这个11是我们数出来的,万一以后变了呢。
println name.substring(0, name.length() - 2)
println name.substring(0, 11)
println name[0..-3]
上面三个都有一个特点,硬编码, -2 11 -3都是我们数出来的。这种代码很烂,万一这个版本号规则变化了呢,当然点号隔开这个规则不会变化。
4.字符串反转
这个题目经常考,当然大部分是让你手写代码实现,不准你使用内置api方法完成,在Java中,api的话,我们可以借助StringBuider来实现,或者从后往前for循环打印出来。看看groovy很简单,索引就可以搞定。
package com.anthony.test
def name = "Anthony"
println name[-1..0]
ynohtnA
5.字符串切割
package com.anthony.test
// 返回字符串数组
def st = "This is a groovy class"
println st.split(" ")
// 返回list集合
println st.tokenize(" ")
这两种切割方法要会使用,主要是切割这个正则表达式如何写,上面是空格切割。
6.字符串替换和大小写转换
package com.anthony.test
// 返回字符串数组
def st = "This is a groovy class"
println st.replace("class", "session")
println st.toLowerCase()
println st.toUpperCase()
This is a groovy session
this is a groovy class
THIS IS A GROOVY CLASS
7.字符串转成List和数组
package com.anthony.test
// 转list
def st = "This is a groovy class"
println st.toList()
// 转数组
println st.toCharArray()
[T, h, i, s, , i, s, , a, , g, r, o, o, v, y, , c, l, a, s, s]
This is a groovy class
8.字符串另外两个定义方式
这两个很少用,语法不知道从哪个语言学过来的
package com.anthony.test
def st1 = /is green sky/
def st2 = $/is blue sky/$
println st1
println st2