我想根据模式匹配替换字符串中的字符。 temp
的变量值由用户给出,可能有也可能没有前面的“m”。
但如果它确实有前一个m
,我想用m
(减号)替换字符"-"
。
因此,如果temp
的值为"m40"
,那么temp1
应该看起来像"-40"
以下是我的尝试,但效果不佳:
set temp "m40c"
if {regexp ^m $temp match} {
regsub m $temp "-" $temp1
puts $temp1
}
答案 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 "-"]