使用TCL拆分字符串

时间:2016-09-20 10:21:30

标签: tcl

我是TCL的新手,我试图将下面的字符串拆分成一个列表:

Sep 20, 07:45:12, 100.1.1.1

我的期望是:

{Sep 20} {07:45:12} {100.1.1.1}

有人能帮我解决一个简单的问题吗?我有自己的方式,但它有点复杂 感谢

3 个答案:

答案 0 :(得分:1)

由于您使用的是多字符分隔符序列,因此最简单的方法是使用string map将其转换为单个罕见字符(Unicode的“不寻常”部分会执行此操作;我们将使用转义版本那个)然后split就此而言。这真是一个单线......

set theString "Sep 20, 07:45:12, 100.1.1.1"
set pieces [split [string map {", " \uffff} $theString] \uffff]

你也可以使用Tcllib中的splitx内容来解决这个问题,但对于这种情况来说这太过分了。

答案 1 :(得分:0)

% set foo "Sep 20, 07:45:12, 100.1.1.1"
Sep 20, 07:45:12, 100.1.1.1
% split [regsub -all {,\s+} $foo ,] ,    
{Sep 20} 07:45:12 100.1.1.1
% 

明确地根据需要用大括号括起任何项目。 从TCL的角度来看,它只是一种显示空格分隔字符串的机制。例如,

% split "foo bar, bar bat, bat foo" ,
{foo bar} { bar bat} { bat foo}
% 

答案 2 :(得分:0)

为了完整;要求Tcl 8.6+(8.5与下面提到的纯Tcl附加组件):

set txt "Sep 20, 07:45:12, 100.1.1.1"
lmap item [split $txt ,] {string trim $item}
# => {Sep 20} 07:45:12 100.1.1.1

文档: lmap (for Tcl 8.5)lmapsetsplitstring