尝试在MUMPS中编写代码,以在字符串中用新代码替换旧代码。无论新旧。
期望的答案=";我的老朋友"但是得到=";我的老朋友"相反我如何得到预期的答案?
s str="My old old friend"
s old="old"
s new="very old"
n ctr,max
s max=$L(str)
f ctr=1:1:($L(str,$E(old))-1) i $F(str,old)>0 s $E(str,$F(str,old)-$L(old),$F(str,old)-1)=new s count=count+1
q str
我认为您遇到的问题是您正在修改str。所以第一个";旧的";被替换为";非常古老";。然后$F看到";旧的";从";非常古老的";并替换它。
- 我的老朋友<--第一个";旧的";被替换
- 我的老朋友则";旧的";在";非常古老的";是已更换
- 我的老朋友
您最好创建一个要返回的新字符串,而不是原地修改。以下是我的想法:
S STR="My old old friend"
S OLD="old"
S NEW="very old"
F I=1:1:$L(STR," ") S TOK=$P(STR," ",I) S:TOK=OLD TOK=NEW S OSTR=$G(OSTR)_" "_TOK
W OSTR,!