首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在tcl中拆分变量并将相同结果存储在不同的变量中

如何在tcl中拆分变量并将相同结果存储在不同的变量中
EN

Stack Overflow用户
提问于 2016-06-22 07:21:23
回答 3查看 133关注 0票数 2

我在变量中有以下数据:

代码语言:javascript
复制
Timestamp,6/22/2016 2:25:00 AM
mos,4.16
jitter,19.22

我想拆分这个变量并将结果存储在3个不同的变量中,如下所示:

代码语言:javascript
复制
Timestamp = 6/22/2016 2:25:00 AM
mos = 4.16
jitter = 19.22 

有什么办法吗??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-22 07:38:49

代码语言:javascript
复制
% set input "Timestamp,6/22/2016 2:25:00 AM
mos,4.16
jitter,19.22"
Timestamp,6/22/2016 2:25:00 AM
mos,4.16
jitter,19.22
% set lines [split $input \n]
{Timestamp,6/22/2016 2:25:00 AM} mos,4.16 jitter,19.22
% foreach line $lines {
    lassign [split $line ,] varname value
    set $varname $value
    set result($varname) $value
}
% set Timestamp
6/22/2016 2:25:00 AM
% set mos
4.16
% set jitter
19.22
% parray result
result(Timestamp) = 6/22/2016 2:25:00 AM
result(jitter)    = 19.22
result(mos)       = 4.16
票数 4
EN

Stack Overflow用户

发布于 2016-06-22 08:44:48

为了完整起见,Dinesh的解决方案有两个变体:

代码语言:javascript
复制
foreach item [split $input \n] {
    set value [lassign [regsub , $item { }] name]
    set result($name) $value
}

这里的主要区别是它只在第一个逗号上拆分(得到的字符串被当作一个带可能多个元素的规则空格分隔的列表,因此可以选择调用lassign)。

代码语言:javascript
复制
foreach {- name value} [regexp -line -inline -all {^([^,]+),(.*)$} $input] {
    set result($name) $value
}

这一次演示了Donal提出的正则分裂。

文档:前程拉什Tcl正则表达式的语法雷杰普雷格设置拆分

票数 2
EN

Stack Overflow用户

发布于 2016-06-22 07:29:20

代码语言:javascript
复制
     Timestamp,6/22/2016 2:25:00 AM
    mos,4.16
    jitter,19.22
    You can spit with (,) and you find an array . 
    then you retrieve the value of Index wise .
    As :- if variable name is var="6/22/2016 2:25:00 AM,4.16,19.22";  
    then   String[] val= var.split(",");
    val[0] = 6/22/2016 2:25:00 AM ;
    val[1] = 4.16;
    val[2] = 19.22;

if your technology is java .
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37961121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档