3

请告诉我用逗号替换多个空格的方法,例如输入字符串

set string "boy      cat dog            girl     man"

字符串之间可以有多个空格,例如 8 在 boy 和 cat 之间,4 在 dog 和 girl 之间

我想要它boy,cat,dog,girl,man

4

3 回答 3

8

这真的很简单:您只需要使用regsub,它基于正则表达式执行替换。

set string "boy     cat   dog  girls man"
regsub -all {\s+} $string ,

你得到

boy,cat,dog,girls,man

\s匹配单个空格,+表示前一个原子的一个或多个,因此组合给出一个或多个空格

于 2013-10-21T10:37:27.393 回答
3

我们不必做这么多的工作..试试这个...加入将完成您的全部工作..不要拆分..只需加入...

 set string "boy      cat dog            girl     man"
 set string [join $string ,]
于 2013-10-22T05:28:49.803 回答
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::splitcsv::join.

于 2013-10-21T11:55:11.673 回答