我正在尝试将所有特殊字符(包括空格、连字符等)替换为 tcl 中的字符串变量中的下划线。
例子
input: Stack Overflow helps%me(a lot output: Stack_Overflow_helps_me_a_lot
我写了下面的代码,但它似乎没有工作。
set varname $origVar
puts "Variable Name :>> $varname"
if {$varname != ""} {
regsub -all {[\s-\]\[$^?+*()|\\%&#]} $varname "_" $newVar
}
puts "New Variable :>> $newVar"
一个问题是,它不是替换 $varname 中的字符串,而是在 $origVar 而不是 $varname 中遇到第一个空格后删除数据。$newVar 中也没有存储任何值。不知道为什么,而且我在我的 tcl 书中阅读了示例代码(正确的语法),据此它应该是这样的
regsub -all {[\s-][$^?+*()|\\%&#]} $varname "_" newVar
所以我使用了相同的语法,但它不起作用,并给出了与修改 $origVar 而不是所需的 $varname 值相同的结果。