String “如何删除字符”;{“和”};在使用TCL从文件中读取字符串之后,是否从字符串中读取?
字符串:String “如何删除字符”;{“和”};在使用TCL从文件中读取字符串之后,是否从字符串中读取?,string,tcl,String,Tcl,字符串: {ii= 10 } & {jj= 2 } 我需要: ii= 10 & jj= 2 我试过: string trim,string replace,lreplace, 它们对我不起作用。如果你有 set x "{ii= 10 } & {jj= 2 }" 你能行 string map {\{ {} \} {}} $x # -> ii= 10 & jj= 2 即,用空字符串替换文字左大括号和右大括号 但是您的字符串实际上看起来很像列表的字符串
{ii= 10 } & {jj= 2 }
我需要:
ii= 10 & jj= 2
我试过:
string trim
,string replace
,lreplace
,
它们对我不起作用。如果你有
set x "{ii= 10 } & {jj= 2 }"
你能行
string map {\{ {} \} {}} $x
# -> ii= 10 & jj= 2
即,用空字符串替换文字左大括号和右大括号
但是您的字符串实际上看起来很像列表的字符串表示形式,自动插入大括号以保留空白。把它作为一个列表,你所需要做的就是
join $x
# -> ii= 10 & jj= 2
使用string trim
不起作用,因为它只删除字符串末尾的字符:
string trim $x \{\}
# -> ii= 10 } & {jj= 2
在这种情况下,stringreplace
命令的工作量太大了
lreplace
命令作用于列表元素,而不是字符串中的字符
文档:,这应该可以:
% set x "{ii= 10 } & {jj= 2 }"
{ii= 10 } & {jj= 2 }
% regsub -all {\{|\}} $x ""
ii= 10 & jj= 2
在这里,它只是删除所有的大括号并替换为空字符串——就像它删除它们一样看起来是这样的:{ii=10}&{jj=2},其中第一个列表中的元素是“ii”,“=”,“10”和第二个列表“jj”,“=”,“2”@LeoLima:我看到了一个包含三个字符串的列表:“ii=10”,“&”,“jj=2”。字符串当然可以被视为列表,但是第一个和最后一个字符串不是规范的Tcl列表,正如尾随空格所示。