字符串替换。。 看似简单。。就是搞不定。 救我
....@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 换成我想要的字符串变量
头疼。。。
[解决办法]
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
[解决办法]
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