TCL:搜索并替换字符串中的字符

时间:2016-04-18 05:49:22

标签: tcl tk

我想根据模式匹配替换字符串中的字符。 temp的变量值由用户给出,可能有也可能没有前面的“m”。 但如果它确实有前一个m,我想用m(减号)替换字符"-"。 因此,如果temp的值为"m40",那么temp1应该看起来像"-40" 以下是我的尝试,但效果不佳:

set temp "m40c"
if {regexp ^m $temp match} {
    regsub m $temp "-" $temp1
    puts $temp1
}

4 个答案:

答案 0 :(得分:2)

regexp,在abov示例中是多余的。如果发现匹配,regsub将替换。否则它不会抛出任何错误。

puts "Original value: $temp"
if {[regsub "^m" $temp "-" temp]} {
    puts "Updated value: $temp"
}

所以,这样的事情可能会有用:

{{1}}

答案 1 :(得分:1)

我确实试过这段代码,它对我有用......只是错过了regexp周围的[]括号。

set temp "m40c"
if {[regexp ^m $temp match]} {
regsub m $temp "-" temp1
puts $temp1
}

答案 2 :(得分:1)

您可以直接使用regsub命令。

% set temp "m40c"
m40c
% regsub m $temp - result
1
% set result
-40c
% set temp "40c"
40c
% regsub m $temp - result2
0
% set result2
40c
%

答案 3 :(得分:0)

或在一行中,

set temp [regsub {^\s*m} $temp "-"]

如果要替换M或m(不区分大小写)

set temp [regsub -nocase {^\s*m} $temp "-"]