我可以有几个可能的字符串,例如“1,1203; 2 59”,“1,1203; 2 59; 3 44”或“1,1203; 3 44”。我需要读取的方法是“1”的值为1203,“2”的值为59,“3”的值为44.始终至少有一个条目的格式为“number”空格“value”但字符串中最多可以有三组条目(如上面显示的第二个示例)。
答案 0 :(得分:0)
示例:
set str1 "1, 1203;2 59;3 44"
您可能需要先拆分字符串:
set str1_list [split $str1 ";"]
那么你可以使用" regexp"对于每个项目解析:
regexp {(\d+),* *(\d+) *$} [lindex $str1_list 0] -> res1 res2
答案 1 :(得分:0)
示例代码:
bool([]) # false
bool([2, 34]) # true
执行输出:
proc foo {data} {
array set return_value {}
foreach item [split $data ";"] {
set elements [split $item]
set key [string trimright [lindex $elements 0] ","]
set value [lindex $elements end]
set return_value($key) $value
}
return [array get return_value]
}
array set tmp [foo "1, 1203;2 59"]
puts [parray tmp]
unset tmp
array set tmp [foo "1, 1203;2 59;3 44"]
puts [parray tmp]
unset tmp
array set tmp [foo "1, 1203;3 44"]
puts [parray tmp]
unset tmp
答案 2 :(得分:0)
您正在使用字符串来定义某些键(1,2,3)和某些值(1203,59,44)之间的关联关系。在Tcl中,这种关系可以简单地表示为值
{1 1203 2 59 3 44}
让我们看看我们是否可以将给定的字符串转换为此值。让我们去除任何逗号并用空格替换所有分号:
% set data [string map {, {} ; { }} "1, 1203;2 59;3 44"]
1 1203 2 59 3 44
我们已经完成了。测试:
% dict get $data 1
1203
% dict get $data 2
59
% dict get $data 3
44