Tcl regsub用其他字符替换所有字母宠物

Tcl regsub用其他字符替换所有字母宠物,tcl,Tcl,我需要生成一个与原始字符串长度相同的随机输出字符串。我尝试了以下方法: regsub -all -nocase ABCDEFGHIJKLMNOPQRSTUYWXYZ0123456789 ZYXWYUTSRQPONMLKJIHGFEDCBA9876543210 $str 但输出总是与变量str的值无关: ZYXWYUTSRQPONMLKJIHGFEDCBA9876543210 我的要求是替换或替换像A到Z,B到Y。。。。0到9和9到0? 如何实现这一点?您可以使用: regsub的问题是,

我需要生成一个与原始字符串长度相同的随机输出字符串。我尝试了以下方法:

regsub -all  -nocase ABCDEFGHIJKLMNOPQRSTUYWXYZ0123456789 ZYXWYUTSRQPONMLKJIHGFEDCBA9876543210 $str
但输出总是与变量str的值无关:

ZYXWYUTSRQPONMLKJIHGFEDCBA9876543210
我的要求是替换或替换像A到Z,B到Y。。。。0到9和9到0? 如何实现这一点?

您可以使用:



regsub的问题是,您无法轻松地告诉它替换映射到特定对象的对象,您必须创建一个单独的过程并进行进一步替换。为了简单起见,只需使用为这种替换而制作的字符串映射。

在8.7中使用
regsub
会容易得多,但是
string映射
将继续是我最喜欢的方法。
# Just generating the replacements, we want to have "A Z B Y C X ... 0 9 ... 9 0"
set letters "ABCDEFGHIJKLMNOPQRSTUYWXYZ"
set numbers "0123456789"
set replacements {}

foreach l [split $letters ""] r [split [string reverse $letters] ""] {
    lappend replacements $l $r
}

foreach n [split $numbers ""] r [split [string reverse $numbers] ""] {
    lappend replacements $n $r
}

# string map in use:
set input "MEW2"
set output [string map -nocase $replacements $input]
# NYD7