导航
  • 全部
...

vb字符串多重替换问题

jacklee19822001 2003-12-01 12:18:47
想做个可疑替换多个字符串的工具,就是说一下子可以替换多个字符串,
不过有个问题
比如,aaa要替换成aba
bab要替换成ccc

下列字符串
aaabab
用先全部替换一个再替换下一个的方法替换后就成了
aaabab->ababab->acccab
应该是
abaccc的

怎么解决阿?
...全文
给本帖投票
454 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlpseeyou 2003-12-02
  • 打赏
  • 举报
回复

replace(str,'aaa','aba')
replace(str,'bab','ccc')
jpinglee 2003-12-02
  • 打赏
  • 举报
回复
用一些"罕见字符"来做肯定存在"安全隐患",用定长,变长字符来做不过又有点麻烦
Zedee 2003-12-01
  • 打赏
  • 举报
回复
记录一下当前操作到第几个字符
jacklee19822001 2003-12-01
  • 打赏
  • 举报
回复
这样还不是很保险阿,如果要替换的字符串或替换成的字符串中有这些罕见字符串呢?
northwolves 2003-12-01
  • 打赏
  • 举报
回复
呵呵,先用罕见字符中间变量作替换,再执行相应操作,应该比较快的,如:
Private Sub Command1_Click()
Dim x As String
x = "aaabab"
x = Replace(x, "aaa", "@@@")
x = Replace(x, "bab", "###")
x = Replace(x, "@@@", "aba")
x = Replace(x, "###", "ccc")
MsgBox x
dxqylzg 2003-12-01
  • 打赏
  • 举报
回复
up
TimLee✿ 2003-12-01
  • 打赏
  • 举报
回复
先换成看不到的而且一般又用不到的字符比如ASCII为1的chr(1)哈哈!这个总该可以了把?
flc 2003-12-01
  • 打赏
  • 举报
回复
关注
yunfeng007 2003-12-01
  • 打赏
  • 举报
回复
二义性问题如果没有规则的话,对于机器来说,是不可能解决的。
例如aa->bb aaa->cc aaaa->bbcc,那么对于aaaaaaaaa你怎么来替换?除非你有一套规则,按照规则将之分解,例如你的规则是对于aaaaaaaaa来说,他表示为aa aaaa aaa,这样就可以替换了。
其实你的问题已经涉及到编译原理了,多看看这方面的书吧,对你肯定有启发的。
SoHo_Andy 2003-12-01
  • 打赏
  • 举报
回复
要实现你的要求的前提是对包含你要替换的字符串的内容做出语义分析
比如罕见字符”中介法本身就是一个语义分析的过程,如果想做到非常理想,
这个分析过程本身就会是一个复杂的算法,如果简单点的话,那就要引入用户
交互,减少程序误差。即在每次进行一组字符串替换之前都做语义分析,并
由用户来完成语义分析是否正确的判断,这样循环进行来实现你的要求

如果要替换的字符串非常大,则实现之后的具体应用价值也不大,因为用户不可能
一个个的去判断语义分析是否合理
northwolves 2003-12-01
  • 打赏
  • 举报
回复
适当更改,比方说,你的字符串不会有 string(50,"@")吧?
x = Replace(x, "aaa",string(50,"@"))
x = Replace(x, string(50,"@"), "aba")
boydgmx 2003-12-01
  • 打赏
  • 举报
回复
“罕见字符”中介法虽然可以用,但不是万能的。

分析你的基本需求,就可以看出你的这种需求本身就带有二义性。
也就是说,不管你怎么替换,程序总是无法确定babab这种字符串该如何替换。

对于这种问题,程序应该事先作出判断,也就是说先进行一次“预替换”,如果发现
存在二义性,则提示用户,让用户指定如何替换。
jacklee19822001 2003-12-01
  • 打赏
  • 举报
回复
现在就只能用“罕见字符”中介法,希望大家有更好的提议,我可以在开帖散分

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部