innovus对字符替换,有专门的命令 string,
目前string用起来感觉和tcl里的regexp,regsub类似,但比regexp regsub用起来更简单,更好用,当然regexp,regsub在innovus里一样也支持的
string用法:
1.想要把某个字符串的第 0---最末尾 想换哪个字符就替换哪个字符
a.首先要得到要替换的字符在这个字符串的数组的第几位
ex:string first a 0a23456789abcdef 0
返回1
string first a 0a23456789abcdef 1
也是返回1 意思是在字符串 0a23456789abcdef的,第0位,或者第1位开始找 first a,返回a的位置
string first a 0a23456789abcdef 2
string first a 0a23456789abcdef 3
string first a 0a23456789abcdef 5 。。。,都会返回10,因为从第二位开始找,找到第一个a的位置,a在第10位
string last a 0a23456789abcdef 也可以不带从哪里开始找,默认从0位开始找,这里表示最后一个a在第10位
b.替换字符串
string first _ func_ffg0p88vm40c_rcbest_CCbest_m40c_hold ####会返回4,表示第一个 _在第四位
string replace func_ffg0p88vm40c_rcbest_CCbest_m40c_hold 4 4 * ####会返回func*ffg0p88vm40c_rcbest_CCbest_m40c_hold, 表示将字符串func_ffg0p88vm40c_rcbest_CCbest_m40c_hold的第4位开始到第4位结束,都换成*
string replace func_ffg0p88vm40c_rcbest_CCbest_m40c_hold 4 6 * ####会返回func***g0p88vm40c_rcbest_CCbest_m40c_hold, 表示将字符串func_ffg0p88vm40c_rcbest_CCbest_m40c_hold的第4位开始到第6位结束,都换成*
ex: 把字符串func_ffg0p88vm40c_rcbest_CCbest_m40c_hold,去掉func_, 在去掉_hold,只保留delay_mode
set first [string first _ func_ffg0p88vm40c_rcbest_CCbest_m40c_hold] ####--------》4
set delay_mode [string replace func_ffg0p88vm40c_rcbest_CCbest_m40c_hold 0 $first ""] ######----->ffg0p88vm40c_rcbest_CCbest_m40c_hold
set last [string last _ $delay_mode] ####---->31
set length [string length $delay_mode] ###--->36
set delay_mode [string replace $delay_mode $last [expr $length -1] "" ] ####-----> ffg0p88vm40c_rcbest_CCbest_m40c
2.string match
string match *ffg0p88vm40c_rcbest_CCbest_m40c* func_ffg0p88vm40c_rcbest_CCbest_m40c_hold 会返回1
更多的可以自己去man string