如何将tcl变量值转换为特定格式

时间:2016-07-07 12:38:36

标签: tcl

我该如何转换

set var "USE_90a_Sc_ttv" 

set out "9.0a ttv Sc" 

使用tcl代码?

此致 Divesh

2 个答案:

答案 0 :(得分:0)

使用splitlassignregsub功能:

lassign [split $var _] prefix version type tag
regsub {(\d(\w)?)$} $version {.\1} nversion
set out "$nversion $tag $type"

如果您使用的是较旧的版本而且没有lassign可用,那么 可以使用lindex从split返回的列表中检索特定项目。

set tlist [split $var _] 
set version [lindex $tlist 1]
set type [lindex $tlist 2]
set tag [lindex $tlist 3]
regsub {(\d(\w)?)$} $version {.\1} nversion
set out "$nversion $tag $type"

答案 1 :(得分:0)

我使用sudo mybroker/bin/apollo-broker run 来解析它,scan来汇总结果。

list

在格式末尾放置set var "USE_90a_Sc_ttv" # Remember to check the result of [scan] for number of parsed fields if {[scan $var {USE_%1d%2[^_]_%2[^_]_%3s%c} a b c d e] != 4} { error "Unexpected input data! '$var'" } set out [list $a.$b $d $c] 可让我检测到最后是否有任何意外字符。不应该;只有4个领域应该得到满足。这样可以快速检查我所得到的是我所期望的。此外,%c是一个异常字段说明符,但它只需要2个非下划线字符。