注册 登录
编程论坛 VB6论坛

求助,本人在做一个替换功能的软件,但是出错了,请问问题出现在哪里

wlh641697006 发布于 2015-05-26 11:15, 621 次点击
Private Sub Command1_Click()
Text2.Text = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Text1.Text, "0", "05"), "1", "0A"), "2", "03"), "3", "00"), "4", "09"), "5", "0E"), "6", "07"), "7", "02"), "8", "0C"), "9", "0F"), "A", "9A"), "B", "93"), "C", "90"), "D", "99"), "E", "9E"), "F", "97"), "G", "92"), "H", "9C"), "I", "9F"), "J", "??"), "K", "94"), "L", "98"), "M", "??"), "N", "9B"), "O", "??"), "P", "E5"), "Q", "EA"), "R", "E3"), "S", "E0"), "T", "E9"), "U", "EE"), "V", "E7"), "W", "E2"), "X", "EC"), "Y", "EF"), "Z", "??"), " ", "35"), "-", "36")
End Sub
  本来1要换成0A的,结果换成了09A了,求解救
7 回复
#2
lianyicq2015-05-26 11:24
回复 楼主 wlh641697006
写得太有内涵了,不容易看
#3
wmf20142015-05-26 11:32
这个应该可以大大简化的
#4
lianyicq2015-05-26 11:34
这样嵌套不合适,比如0换为05了,在执行5换05的时候又要被换为0e
这样嵌套也费时间,应该逐字符转换
#5
Artless2015-05-26 12:55
1换成09A,结果正确。
#6
风吹过b2015-05-26 15:16
第一步, "1", "0A"
第二步, "A", "9A"
所以, 1 变成了 09A ,答案是这个了。

这种很多个字符都需要替换的,并且互相会干扰的,应该按 4楼提了那种逐字符进行替换。

dim s1 as string,s2 as string,s3 as string
dim i as long
s1=text1.text
for i=1 to len(s1)
  s2=mid(s1,i,1)
  select case s2
  case "0"
     s3=s3 & "05"
  case "1"
     s3=s3 & "0A"
.....
  case  "G","g"
     s3=s3 &  "92"
.....
  case else
     s3=s3 & s2
end select case
next i
#7
wp2319572015-05-26 15:24
这样的代码看着迷糊  极难维护
#8
renxiaoyao362015-05-29 17:41
这种程序我做过,我的方法是:
将每个A啊B啊C啊都变成“A ”,“B ”等等
然后Replace时,改为:
Replace(xxx,"A ",xxx)
这样就不会重复了
同时比较容易看懂
当然,空格可以替换为其他字符,这只是一个标示符而已
1