TCL字符串和列表转换命令split和join
在TCL中split命令将字符串分成几个部分,然后可以对各个部分独立地进行处理。它会创建一个列表,列表中的元素就是字符串的各个部分。命令格式为:
split string ?splitChars?
split的第一个参数是待分割的字符串,第二个参数是一个或多个分割字符。 split会找到字符串中所有的分割字符。然后它会创建一个列表,其元素就是分割字符之间的子字符串。字符串的边界也被作为分割字符对待。 例如,有一个变量,其内容是由逗号分开的值,使用split把它转化成一个列表,变量中的每一个值成为列表的一个元素。
set x "Anita Sanchez, 35, VP Marketing"
set y 39,72, ,-17,
split $x ,
→{Anita Sanchez} 35 {VP Marketing}
split $y ,
→39 72 {} -17 {}
如果子符串中连续出现分割字符,或者分割字符出现在字符串的开头或结尾,就像上面的第二个示例那样,结果中就会产生空元素。分割字符本身会被抛弃。 可以设定由多个字符组成分隔符,例如
split xbaybz ab
→x {} y z
如果指定为分隔字符的是空字符串,那么会把字符串的每一个字符都分开,作为新列表中的独立元素。
split "Hello world" {}
→ H e l l o {} w o r l d
TCL中的join命令大体上是split命令的逆操作。它把列表元素串接成一个字符串,元素之间用指定的分隔符号隔开。格式为:
join list ?joinString?
join获取两个参数:一个列表和一个分隔字符串。分隔字符串可以包括任意多个字符,也可以不指定分隔符。例如:
join {{} usr include sys types.h) /
→/usr/include/sys/types.h
set x {24 112 5}
expr [join $x +]
→141
第一个示例以/作为分隔符,连接产生了一个Unix类型的路径名称。第二个示例以+作为分隔符,连接产生了一个TCL表达式。