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

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

javascript中break与continue的区别

在javascript中,break是结束整个循环,break下面的语句不再执行了 for(let i=1;i<=5;i++){if(i===3){break}document.write(i) } 上面的代码中,当i=1时,执行打印输出语句,当i=2时,执行打印输出语句,当i=3时,遇到break了,整个循环就结束了。 执行结果是12 continue语句是停止当前循环,返回从头开始。

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

ActiveMQ—Queue与Topic区别

Queue与Topic区别 转自:http://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:         1、点对点(point-to-point,简称PTP)Queue消息传递模型:         通过该消息传递模型,一个应用程序(即消息生产者)可以