Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别

本文主要是介绍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()区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051013

相关文章

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4