在tcl中获取数组并构建流表达式



我正试图从以下数组构建一个STREAM表达式。问题是,我想从数组值中复制特定的字符串,并在整个字符串的另一个位置重复它们。这是我的代码,以及期望的结果。

所需结果:STREAM::表达式@$val-1@$val-2$val-1@@$val-3@$val-4$val-3@原始字符串:$val-2$val-1$val-4$val-3基本上,val-1表示一个短字符串,我想用附加的第二个字符串替换它。换句话说,这是插入的另一种方式。

array set {
  key1 $val-2$val-1$val-4$val-3
}

我有放@符号的代码,我只需要移动字符串。

有两种方法可以对字符串值进行处理(它保存在数组中并不重要),即不使用正则表达式的和使用正则表达式的。

无RE

set s {$val-2$val-1$val-4$val-3}
set substring [string range $s 6 12]
set s $substring$s

好吧,有几种方法可以获得子字符串(例如,一个合适的split,然后是lindex,如下所示),但如果不知道细节,很难说它们会是什么。

set s {$val-2$val-1$val-4$val-3}
set bits [split $s {$}]
set substring $[lindex $bits 2]
set s $substring$s

有RE

set s {$val-2$val-1$val-4$val-3}
regsub {^.*?($val-1)} $s {1&} s

在这种情况下,你需要担心图案来选择你想要的单品。基本上和上面的问题一样,除了现在的RE。这可能会也可能不会让它变得更容易…


上述所有解决方案都在s变量中存储以下内容:

$val-1$val-2$val-1$val-4$val-3

相关内容

  • 没有找到相关文章