请参阅下面的代码,作为示例,我试图找到使用带有backrefeence的regsub作为有选择地使用string toupper
的方法。我没有得到我所期望的结果。
请参阅下面的简单示例(是的,我知道我可以使用string toupper $string 0 0
,但是,这只是为了显示原理,在一个简单的例子中)。
> puts [ regsub {^(.)} "min" "s\\1" ]
smin
> puts [ regsub {^(.)} "min" [ string toupper "\\1" ] ]
min
可以看出,在反向引用上应用的字符串toupper不起作用,但后向引用可用于双引号操作。
我正在使用TCL版。 8.6
答案 0 :(得分:1)
string toupper
正在运作,但没有做你想做的事; string toupper "\\1"
只是字符串\1
,因此regsub
不会产生太大影响。问题是regsub
没有办法“在替换站点运行此命令”;我多年来一直想要解决这个问题,但是从来没有真正这样做过(太多的项目让这个项目脱颖而出)。
相反,您需要regsub
在命令中替换字符串,然后subst
结果,但为了做到这一点,您需要首先使字符串安全{{1与subst
一起使用。幸运的是,这实际上非常简单。
我将这一点分开,让您更容易检查每个阶段的具体内容:
string map