字符串的拆分
前言
字符串的处理是每种语言经常会遇到的问题,tcl作为一门脚本语言自然也不例外,关于字符串的拆分,一般会有两种情况:1.使用单个字符拆分,2.使用字符串拆分。
1.使用单个字符拆分字符串
如图所示,使用单个字符可以轻松地分割字符串。
2.使用字符串拆分字符串
当我们使用字符串拆分字符串,tcl会使用字符串中的每个字符来拆分,无法达到我们的目的。
这时我们可以定义一个快捷的方法来使用字符串拆分字符串,如下是我新建的一个split.tcl文件的内容:
1 proc OnePiece {str sep} { 2 split [string map
接下来我们执行一下这个文件:
从结果中我们可以看出,我们已经成功地使用字符串‘ok’来拆分‘RookieSky’
NICE!!!
原理
1.split string ?splitChars?
根据splitChars变元中的字符分解string,返回一个列表。每个列表元素由string中在splitChars字符之间的字符组成,如果string含有两个连续的字符与splitChars中的字符相同或者第一或最后一个字符为splitChars中的字符就返回一个空列表元素,如果splitChars是一个空字符串那么string的每一个字符作为单独的元素组成列表,缺省splitChars为空格符。
2.list ?value value …?
这个命令生成一个list,元素就是所有的value,TCL中list是由一组元素组成的有序集合,list可以嵌套定义,list的每个元素可以是任意字符串,也可以是list。
3.string map ?-nocase? charMap str
返回根据 charMap 中输入、输出列表将 str 中的字符进行映射后而产生的新字符串,charMap这个列表中的值我们可以看成{key value key value …}的映射,str中已经映射过的字符串不会重复映射。
由此我们可以理解为我们写的方法是将用来拆分的字符串和形成一个映射替换后,使用来进行拆分。
最新评论