string - TCL-如何在 tcl 程序中将字符串解释为多个参数?

标签 string function split tcl procedures

我有一个程序需要接受一定数量的参数来创建数组。我有一个 csv 文件,其中包含每行参数的信息。使用命令[split $line ,],返回中间带有空格的信息,但过程将其视为一个参数而不是 7 个或 8 个参数。如何获取 csv 行,如下所示:

 day-month-year,34,3,12,5,1,54,21,$big money

被视为多个参数,例如:

 date num1 num2 num3 num4 num5 num6 num7 money

或类似以下的变体:

 day month year num1 ... num7 big money

分割命令返回:

 date num1 num2 num3 num4 num5 num6 num7 {big money}

这很好,只是它被视为单个参数。我的通话如下所示:

 procName [split $line ,]

谢谢。

最佳答案

如果您使用的是 Tcl 8.5 或更高版本:

procName {*}[split $line ,]

如果您使用的是 Tcl 版本 8.4,则 {*} 构造尚未存在,您别无选择,只能执行以下操作:

eval procName [split $line ,]

请注意,评估可能不安全,尤其是当输入来自未知来源时。

更新

{*} 构造称为参数扩展。我所知道的只是这样:

procName {*}{a b c}

等同于:

procName a b c

此功能是在 Tcl 改进提案 (TIP) 293 中提出的并在 Tcl'er Wiki 中进行了讨论.

关于string - TCL-如何在 tcl 程序中将字符串解释为多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467896/

相关文章:

调用函数需要带有子结构的结构

java比较逗号分隔的字符串

r - 使用分组变量按列拆分data.frame

swift - 循环遍历源代码中的多个实例?

c++ - 为什么必须内联定义在类外部(但在头文件中)的类成员函数?

algorithm - 后缀树 : Longest repeating substring implementation

Javascript 在输入上调用函数

android - Android 中的 JSON 数组拆分器

python - 如何将我的 bytearray ('b\x9e\x18K\x9a' ) 转换为类似这样的东西--> '\x9e\x18K\x9a' <---只是 str ,而不是数组

php - 多行字符串到数组