是否可以使用各种变量作为 tcl/tk 的字符串映射中的替换条目?

Is it possible to use various variables as a replacement entry in the string map of the tcl/tk?

我想插入一个带有 'word' 条目的变量,以便在 'string map' 中覆盖。我们通常这样做:

# Input variable
set str "Is First Name"

# Result new strig 
puts [string map -nocase { {First Name} {Last Name} } $str]

我需要的是通过第二个变量替换它。例如:

set replace "Last Name"

puts [string map -nocase { {First Name} $replace } $str]

我有以下输出:

在我问之前,我做了研究,但我没有找到任何类似的东西。我什至尝试改编其他示例,但无济于事。

记住Rule 6:大括号内不进行替换。因此,您必须以其他允许变量替换的方式构建列表,例如使用 list:

string map -nocase [list {First Name} $replace] $str

您也可以使用 regsub 而不是 string map:

regsub -all -nocase {***=First Name} $str $replace

(正则表达式中的前导 ***= 意味着它被视为一个精确的字符串,RE 元字符失去了它们的正常含义)