Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何获得;多字“&引用;单字;和空字符串所有这些都在TCL列表中?我得到了一份清单,上面写着;“不统一”;大括号格式的卷曲字符串_String_List_Tcl - Fatal编程技术网

String 如何获得;多字“&引用;单字;和空字符串所有这些都在TCL列表中?我得到了一份清单,上面写着;“不统一”;大括号格式的卷曲字符串

String 如何获得;多字“&引用;单字;和空字符串所有这些都在TCL列表中?我得到了一份清单,上面写着;“不统一”;大括号格式的卷曲字符串,string,list,tcl,String,List,Tcl,我是TCL的新手。阅读一些手册,我试图修改我在这里和那里找到的一些脚本,到目前为止,我已经很好地管理了我的需求。。。直到今天 我面临一个(可能是)愚蠢的问题(对于专业人士来说),但对我来说并非微不足道,特别是因为我仍然没有掌握所有的概念(字符串、数组等) 我的情况是这样的: 我有一个第三方应用程序,它在我请求字符串时返回字符串。这些字符串可以是多字(空格“”分隔)、一个字或空字符串。 这些字符串是不可预测的,我无法从上面描述的3种类型中知道任何被询问字符串的类型 执行的典型示例如下: list

我是TCL的新手。阅读一些手册,我试图修改我在这里和那里找到的一些脚本,到目前为止,我已经很好地管理了我的需求。。。直到今天

我面临一个(可能是)愚蠢的问题(对于专业人士来说),但对我来说并非微不足道,特别是因为我仍然没有掌握所有的概念(字符串、数组等)

我的情况是这样的:

我有一个第三方应用程序,它在我请求字符串时返回字符串。这些字符串可以是多字(空格“”分隔)、一个字或空字符串。 这些字符串是不可预测的,我无法从上面描述的3种类型中知道任何被询问字符串的类型

执行的典型示例如下:

list [format "%s" [lindex [some_function 0] 0] [format "%s" [lindex [some_function 1] 0] [format "%s" [lindex [some_function 2] 0] [format "%s" [lindex [some_function 3] 0]
可能不是最优的,但它返回以下内容:(多字、空、1字、多字)

这种格式似乎还可以,但它不够规则,以至于后来破坏了我的swift解析器(在处理它时,将4个字符串分成4个成员的数组)

理想情况下,我希望在所有返回的字符串中都有卷曲的括号,无论是多字、单字还是空字符串。 在处理单字字符串时,“TCL是不规则的”。。。我怎样才能达到这样的理想情况

{Hi you} {} {finishing} {this is string 3}
之所以有花括号,是因为它是典型的分隔符/运算符TCL返回,但我也可以这样做:

list [format "%s" [lindex [some_function 0] 0] [format "%s" [lindex [some_function 1] 0] [format "%s" [lindex [some_function 2] 0] [format "%s" [lindex [some_function 3] 0]
您好,您“”正在完成“”这是字符串3

我应该如何为我的4个示例字符串重写我的原始命令


提前问候和感谢。

您不应该使用其他工具解析tcl列表。它很容易出错,因为tcl列表可以采用各种格式,特别是转义格式

若您需要通过其他工具处理tcl列表,那个么您应该将其转换为某种格式,该格式将被该工具读取。例如,到
json
或类似的东西

但是,您可以将列表转换为所述的简单格式。例如:

set mylist {{Hi you} {} finishing {this is string 3}}
set out "{[join $mylist "} {"]}"
puts $out
这将为您提供:

{Hi you} {} {finishing} {this is string 3}
"Hi you" "" "finishing" "this is string 3"
但是您将与值中的
{}
符号冲突

或:

这将为您提供:

{Hi you} {} {finishing} {this is string 3}
"Hi you" "" "finishing" "this is string 3"
现在,您将与值中的
符号冲突

因此,这些解决方案并不完美

proc quote_words {mylist} {
    join [lmap elem $mylist {format {"%s"} [string map {{"} {\"}} $elem]}]
}
然后

给你

"foo" "" "bar" "a string \"with quotes\""

我知道应该使用适当的解析器和适当的数据结构,但现在,我只需要规范化数组中的元素,以便每个元素都有一个“{”和一个“}”作为分隔符。解决方案的第一部分就完美地完成了这一任务。我尝试连接的设备水平较低,因此“增加了一些规则性”(然后是一些字符溢出)对于我的需要已经足够了。谢谢!像这样的字符串处理相对容易破解…除非不是因为不平衡的大括号。然后它变得非常困难,因为有一些可怕的边缘情况。这就是为什么我们建议避免在自制代码中添加额外的大括号;内置解析器和formaTTER可能不能完全满足您的要求,但它们经过了很好的测试,而且速度很快。幸运的是,我所处理的环境非常适合家庭使用,而且不挑剔,因为我们确实希望收到常规的文本格式。没有人,而是一个过程来创建这样的文本,因此在交付的内容中不需要大括号,所有内容都是可以接受的你会很安全的。瘦但安全。