在TCL中查找字符串中所有数字总和的最优雅方法是什么?

时间:2015-12-12 13:11:31

标签: tcl

在以下格式的TCL字符串中查找所有数字之和的最优雅方法是什么? 例如。

set s1 "{A 30.8950} {B 29.5680} {C 20.5160}"

如何找到总和,30.8950 + 29.5680 + 20.5160?

2 个答案:

答案 0 :(得分:2)

“优雅”方法取决于您如何提取所需的输入。

以下内容只是遍历列表并提取数值。

set s1 "{A 30.8950} {B 29.5680} {C 20.5160}"
set sum 0
foreach elem $s1 {
    # Extracting 2nd element to get the numerical value
    set num [lindex $elem 1]
    set sum [expr {$sum+$num}]
}

puts $sum

输出

80.979

答案 1 :(得分:2)

如果真的只是浮在一个字符串中,你会使用类似的东西:

<ElementPath IgnoreNamespaces="True">
datatableResponse/datatableResult{}/ltr/letters{letter,count}
</ElementPath>

如果它比那更结构化,例如元组的Tcl列表,其中每个元组的第二项是要添加的值,您可以使用:

set sum [tcl::mathop::+ {*}[regexp -all -inline {-?\d+(?:\.\d+)(?:e[-+]?\d+)} $theString]]