首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

字符串替换。 看似简单。就是搞不定。 救小弟我

2012-01-03 
字符串替换。。 看似简单。。就是搞不定。 救我....@A@.....@B@.....@C@.........的意思就是任何内容,可能跟 A

字符串替换。。 看似简单。。就是搞不定。 救我
....@A@.....@B@.....@C@.....

....的意思就是任何内容,可能跟 A B C 的内容重复

现在的问题是 我想把 A换成 X B换成Y C 换成Z

1.如果用REPLACE 函数 会出现如下问题: 比如 如果A=B=C 那就会把A 和 B C 都换成X 而我只想把A换成X 同样...中可能存在和A一样的字符

2.A 两边的@ 我可以确定位置, 如果用MID 替换的话,又会出现下面的问题:
比如 我已经知道A前面@的位置是5 后面@的位置是8
如果A=10 X=9 那A得第一个字母位置是6, 即....@10@.....@B@.....@C@.....
str....@A@.....@B@.....@C@....."  

mid(str,6,2)=9

那会出现的结果是 str 是 ....@90@.....@B@.....@C@..... 也就是说只把1换成了9 而没把0删掉。。

3.如果用split 分组
我刚才也提到过 中间的...可能是任意字符 同样可能是@或者是A, 所以就无法判定A在数组的位置了。

简单点说。 我已经能定位我想替换的A的前面的字符和后面的字符的位置(A可以是字符或字符串), 我想把A换成X(X可以是字符或字符串) 但是不要把前面和后面的字符串中和A相同的字符同时替换掉

各位老大要是头疼的话 ,就这样吧
.10..@10@.....@10@.....@8@..@10@... 就是这个字符串, 我想得到
.10..@10@.....@X@.....@8@..@10@... X可以是1个字符 可以是个字符串 就是把第2个@10@ 中的10 换成我想要的字符串变量  

头疼。。。

[解决办法]

VB code
Private Sub Command1_Click()    '.10..@10@.....@10@.....@8@..@10@... 就是这个字符串, 我想得到    '.10..@10@.....@X@.....@8@..@10@... X可以是1个字符 可以是个字符串 就是把第2个@10@ 中的10 换成我想要的字符串变量        Dim tmpStr As String, resultStr As String    Dim i As Integer, wz As Integer    Dim iStart As Integer, iEnd As Integer        tmpStr = ".10..@10@.....@10@.....@8@..@10@..."    For i = 1 To 4        wz = InStr(wz + 1, tmpStr, "@")        If i = 3 Then           iStart = wz        ElseIf i = 4 Then           iEnd = wz        End If    Next    resultStr = Mid(tmpStr, 1, iStart) & "X" & Mid(tmpStr, iEnd)End Sub
[解决办法]
探讨
各位老大,我还是把整个的字符串贴出来
135:10:hx0183a40:1627207:28320;21921:28389;135:10:hx0183a41:1627207:28320;21921:28390;135:10:hx0183a42:1627207:28320;这就是 原来的字符串。 可以看到 :hx0183a40 hx0183a41 hx0183a42 这些是唯一的ID, 比如第一组……

[解决办法]
VB code
Private Sub Form_Load()    Dim strData$    Dim reg As Object        strData = "135:10:hx0183a40:1627207:28320;21921:28389;135:10:hx0183a41:1627207:28320;21921:28390;135:10:hx0183a42:1"    Set reg = CreateObject("vbscript.regexp")    reg.Global = True    reg.IgnoreCase = True    reg.Pattern = ":(.*?):hx0183a40"    Debug.Print reg.Replace(strData, ":100:hx0183a40")End Sub 

热点排行