字符串拆分和存储在TCL中的值

时间:2016-09-16 19:07:25

标签: tcl

我有一个函数,它将字符串返回到以下方式

% set b [le::splitIntoBoxes $m1_drw -type maxX]
{1.154 0.068 1.222 0.518} {1.154 0.518 1.370 0.562}

我想在x1 y1 x2 y2中拆分字符串和存储值。我已经尝试了所有选项     但无法解决问题

% puts [regexp -all -inline {\S+} $b]
\{1.154 0.068 1.222 0.518\} \{1.154 0.518 1.370 0.562\}

我想忽略" \"所以我可以将值存储在x1 y1 x2 y2。

2 个答案:

答案 0 :(得分:3)

看起来你有一个返回的字符串,必须将其解析为列表列表。

例如:

foreach token $b {
    foreach {x1 y1 x2 y2} $token {break;}
    puts "x1 $x1 y1 $y2 x2 $x2 y2 $y2"
}

第一个 foreach '将空格中的字符串拆分为。

比你有像:

  

{1.154 0.068 1.222 0.518}

这是一个列表本身,在第二个循环中,您要将此列表的每个元素分配给您设计的变量。

答案 1 :(得分:1)

你可以这样做:

% proc mysplit d {
    concat {*}$d
}
% set b {{1.154 0.068 1.222 0.518} {1.154 0.518 1.370 0.562}}
{1.154 0.068 1.222 0.518} {1.154 0.518 1.370 0.562}
% mysplit [mysplit $b]
1.154 0.068 1.222 0.518 1.154 0.518 1.370 0.562