本文主要是介绍Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这篇来一个字符串切割的练习,很多人知道字符串切割是用split()方法,但是很少人知道在groovy中,有一个方法叫tokenize(),这两个方法其实都可以实现字符串切割,但是两者还是有区别的,本篇就来学习和掌握两者的共同点和区别。我也是,之前第一选择就是使用split()函数,直到知道有tokenize()方法,
1.split()得到结果是一个字符串数组,tokenise()得到结果是一个List
def demo_string = "你好 Anthony"out1 = demo_string.split()
out2 = demo_string.tokenize()
println out1
println out2
boolean b1 = out1 instanceof String[]
boolean b2 = out2 instanceof List
println b1
println b2
2.split()得到结果允许保留空字符串,tokenize()得到结果是List,不会保留空字符串
def demo_string = "Hello Anthony"out1 = demo_string.split("l")
out2 = demo_string.tokenize("l")
println out1
println out2
测试结果:
[He, , o Anthony]
[He, o Anthony]
上面这个例子,由于切割之后存在空的字符串,如果有些场景需要遍历切割之后结果集,如果元素为空,调用有些方法可能存在空指针,特别是在Java语言中,所以有经验的程序员出于这个考虑,大部分情况下使用tokenize()来进行字符串切割。
3.tokenize()每一个字符都切割出来,而split()会一个单词切割出来
def demo_string = "Hello world"out1 = demo_string.split('lo')
out2 = demo_string.tokenize('lo')
println out1
println out2
测试结果
[Hel, world]
[He, w, r, d]
从这个案例来说,如果你切割之后只拿切割的左边部分,右边不考虑,而且考虑是否空值,那么建议选择tokenize()方法。如果你切割之后,右半边有元素也需要,那么选择split()是最合适的,毕竟右边如果用tokenize()会切割乱七八糟,造成字符串字符丢失。
4.split()中分隔符可以使用正则,但是tokenize()不支持正则
def demo_string = "hello world 123 herload"out1 = demo_string.split(/\d{3}/)
println out1
上面/xxxx/ 中的xxx部分是正则表达式,测试结果:
[hello world , herload]
本篇就总结了下split()和tokenize()两种常见的字符串分割的相同和区别的地方。下一篇的练习,我们会用到字符串分割。
这篇关于Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!