请告诉我用逗号替换多个空格的方法,例如输入字符串
set string "boy cat dog girl man"
字符串之间可以有多个空格示例8,男孩和猫之间,4和狗和女孩之间
我希望它为boy,cat,dog,girl,man
答案 0 :(得分:7)
这很简单:你只需要使用regsub
,它会根据正则表达式执行替换。
set string "boy cat dog girls man"
regsub -all {\s+} $string ,
你得到了
boy,cat,dog,girls,man
\s
匹配单个空格,+
表示前一个原子的一个或多个,因此该组合为提供了一个或多个空格
答案 1 :(得分:3)
我们不必做这么多的工作..尝试这个...加入将完成你的整个工作..不要分裂..只是加入......
set string "boy cat dog girl man"
set string [join $string ,]
答案 2 :(得分:0)
另一种解决方案是使用split
将原始(空格分隔)字符串分隔为单词列表,使用join
制作逗号分隔字符串
set original "boy cat dog girl man"
set l [split $original]
set final [join $l ,]
这适用于您的示例,但不会处理原始字符串与Tcl的列表概念不正确对应的情况。它也无法应对转换,比如
boy cat dog girl man "Aunt Sally"
到
boy,cat,dog,girl,man,"Aunt Sally"
如果您想处理这种情况,请查看csv包,特别是csv::split
和csv::join
。