我正试图从以下数组构建一个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