Tcl 从字符串中删除双倒逗号
我有这样一句话:Tcl 从字符串中删除双倒逗号,tcl,trim,Tcl,Trim,我有这样一句话: {"a/b"} {"c/d"} {"e/f"} 我希望输出为: a/b c/d e/f 基本上我想从现有的行中删除所有的“和{}” 在TCL我应该怎么做 我尝试过使用字符串修剪,但没有帮助 set z {{"a/b"} {"c/d"} {"e/f"}} set trimmed_z [string trim $z "\"\"\}\{"] 它给 a/b"} {"c/d"} {"e/f string trim将仅删除字符串末端的字符,即仅删除开头和结尾的字符。您可以使用: 否
{"a/b"} {"c/d"} {"e/f"}
我希望输出为:
a/b c/d e/f
基本上我想从现有的行中删除所有的“和{}”
在TCL我应该怎么做
我尝试过使用字符串修剪
,但没有帮助
set z {{"a/b"} {"c/d"} {"e/f"}}
set trimmed_z [string trim $z "\"\"\}\{"]
它给
a/b"} {"c/d"} {"e/f
string trim
将仅删除字符串末端的字符,即仅删除开头和结尾的字符。您可以使用:
否则,由于该行看起来像一个Tcl列表,您可以使用(Tcl 8.6+)来获取“最里面的”
子列表的元素“:
还有其他方法可以做到这一点;可能是循环和
字符串修剪(这里我们只需要删除引号,因为这里的大括号似乎起到了引用机制的作用):
或:
或者,如果您喜欢使用以下正则表达式:
string trim
将仅删除字符串末端的字符,即仅删除开头和结尾的字符。您可以使用:
否则,由于该行看起来像一个Tcl列表,您可以使用(Tcl 8.6+)来获取“最里面的”
子列表的元素“:
还有其他方法可以做到这一点;可能是循环和字符串修剪(这里我们只需要删除引号,因为这里的大括号似乎起到了引用机制的作用):
或:
或者,如果您喜欢使用以下正则表达式:
这看起来像是一个Tcl列表,其中内部大括号是由于元素中的“
字符。因此,我们所需要做的就是对每个元素应用剥离命令(相当简单的字符串修剪)<代码>lmap
简化了这一过程:
set yourData {{"a/b"} {"c/d"} {"e/f"}}
set yourCleanData [lmap elem $yourData {
string trim $elem \"
}]
这看起来像是一个Tcl列表,其中内括号是由于元素中的“
字符。因此,我们所需要做的就是对每个元素应用剥离命令(相当简单的字符串修剪
);lmap
使这变得简单:
set yourData {{"a/b"} {"c/d"} {"e/f"}}
set yourCleanData [lmap elem $yourData {
string trim $elem \"
}]
我试过集z{{“a/b”}{“c/d”}{“e/f”}集trimmed{uz[string trim$z'\'\'\'\}}{{e/fi试过集z{“a/b”}{“c/d”}{“e/f”}集trimmed{uz[string trim$z'\'\'\'\'\'\\\'\\\\\\\\\\}}}}}它给出了a/b{“c/d”{“e/d”}{“e/FSZ”{工作感谢在这种情况下,您可能想接受答案?设置clean_z[string map{\''\{\}'}$z]工作感谢在这种情况下,您可能想接受答案?
set z {{"a/b"} {"c/d"} {"e/f"}}
set cleaned_z ""
foreach n $z {
lappend cleaned_z [string trim $n \"]
}
puts $cleaned_z
# a/b c/d e/f
package require struct
set z {{"a/b"} {"c/d"} {"e/f"}}
set cleaned_z [struct::list flatten $z]
# a/b c/d e/f
set z {{"a/b"} {"c/d"} {"e/f"}}
# I'm only escaping the quote so the syntax highlighting doesn't break, but it's not
# necessary
set cleaned_z [regsub -all {[\"{}]} $z ""]
# a/b c/d e/f
set yourData {{"a/b"} {"c/d"} {"e/f"}}
set yourCleanData [lmap elem $yourData {
string trim $elem \"
}]