是否可以使用regsub在表达式中进行不同的替换?
例:
set a ".a/b.c..d/e/f//g"
Run Code Online (Sandbox Code Playgroud)
现在,在该表达式中,是有可能取代" ."为" yes"" .."为" no"" /"为" true"" //"如" false在一个单一的regsub命令"?
有了regsub,没有.有对这样的事情(这需要与比赛信息评估命令的结果替换)一个长期的功能需求,但它没有采取行动日期.
但string map在这种情况下,你可以用你想做的事情:
set a ".a/b.c..d/e/f//g"
set b [string map {".." "no" "." "yes" "//" "false" "/" "true"} $a]
puts "changed $a to $b"
# changed .a/b.c..d/e/f//g to yesatruebyescnodtrueetrueffalseg
Run Code Online (Sandbox Code Playgroud)
请注意,在构建映射时,如果任何from-value是另一个的前缀,则应首先放置较长的from-value.(这是因为string map实现会检查哪些更改按照您在其中列出的顺序进行...)
可以在两个步骤中使用regsub和subst进行多目标替换,但除了非常复杂的情况之外,我不建议使用它!一个不错string map的东西更容易使用.
| 归档时间: |
|
| 查看次数: |
2548 次 |
| 最近记录: |