事情是酱紫滴。。有个短信网关的移动公司,他们返回的回复信息如下:
before = "13798989898//???这是第一条//1010<@>13798989898//???这是第二条//1010<@>13763035656//???新的第一条//8888<@>13763035656//???新的第二条//8888<@>13763035656//???新的第三条//8888<@>13512121212//这是正常的//4512"格式是 号码//内容//扩展号<@>号码//内容//扩展号......想把它变成(凡是带???的都是分段信息,需要人工拼接)after = "13798989898//这是第一条这是第二条//1010<@>13763035656//新的第一条新的第二条新的第三条//8888<@>13512121212//这是正常的//4512"想通过一个function来解决:
after = MyGOD(before) '想达到的效果*******************************************************************
为方便观看,我人工整理一下
*******************************************************************
13798989898//???这是第一条//1010
<@>
13798989898//???这是第二条//1010
<@>
13763035656//???新的第一条//8888
<@>
13763035656//???新的第二条//8888
<@>
13763035656//???新的第三条//8888
<@>
13512121212//这是正常的//4512变成13798989898//这是第一条这是第二条//1010
<@>
13763035656//新的第一条新的第二条新的第三条//8888
<@>
13512121212//这是正常的//4512*************************************************************
如果还是觉得理解不了的,可以看看我的猜想图
before = "13798989898//???这是第一条//1010<@>13798989898//???这是第二条//1010<@>13763035656//???新的第一条//8888<@>13763035656//???新的第二条//8888<@>13763035656//???新的第三条//8888<@>13512121212//这是正常的//4512"格式是 号码//内容//扩展号<@>号码//内容//扩展号......想把它变成(凡是带???的都是分段信息,需要人工拼接)after = "13798989898//这是第一条这是第二条//1010<@>13763035656//新的第一条新的第二条新的第三条//8888<@>13512121212//这是正常的//4512"想通过一个function来解决:
after = MyGOD(before) '想达到的效果*******************************************************************
为方便观看,我人工整理一下
*******************************************************************
13798989898//???这是第一条//1010
<@>
13798989898//???这是第二条//1010
<@>
13763035656//???新的第一条//8888
<@>
13763035656//???新的第二条//8888
<@>
13763035656//???新的第三条//8888
<@>
13512121212//这是正常的//4512变成13798989898//这是第一条这是第二条//1010
<@>
13763035656//新的第一条新的第二条新的第三条//8888
<@>
13512121212//这是正常的//4512*************************************************************
如果还是觉得理解不了的,可以看看我的猜想图
Dim info
Dim info1
Dim str
Dim tem
Dim start_str As String
Dim end_str As String
Dim i As Integer
Dim j As Integer
info = Split(before, "<@>")
ReDim info1(UBound(info), 3)
For Each str In info
tem = Split(str, "//")
For i = 0 To 2
info1(j, i) = tem(i)
Next
j = j + 1
Next
For i = 0 To UBound(info)
If info1(i, 0) <> start_str Then
start_str = info1(i, 0)
If end_str = "" Then
end_str = info1(i, 2)
Else
MyGOD = MyGOD & "//" & end_str & "<@>"
End If
MyGOD = MyGOD & start_str & "//"
End If
MyGOD = MyGOD & info1(i, 1)
Next
End Function
Private Sub Form_Load()
Dim s As String, Cod() As String, Txt() As String
Dim Ext() As String, Mess() As String, i As Byte
Dim OutTxt As String
s = "13798989898//???这是第一条//1010" & _
"<@>" & _
"13798989898//???这是第二条//1010" & _
"<@>" & _
"13763035656//???新的第一条//8888" & _
"<@>" & _
"13763035656//???新的第二条//8888" & _
"<@>" & _
"13763035656//???新的第三条//8888" & _
"<@>" & _
"13512121212//这是正常的//4512"
Mess = Split(s, "<@>")
ReDim Cod(UBound(Mess))
ReDim Txt(UBound(Mess))
ReDim Ext(UBound(Mess))
For i = 0 To UBound(Mess)
Tmp = Split(Mess(i), "//")
Cod(i) = Tmp(0)
Txt(i) = Tmp(1)
Ext(i) = Tmp(2)
Next
For i = 0 To UBound(Mess)
If InStr(Txt(n), "???") <> 0 Then
If i = 0 Then
OutTxt = Cod(0) & "//" & Replace(Txt(i), "???", "")
'Debug.Print OutTxt
Else
If Ext(i) = Ext(i - 1) And Cod(i) = Cod(i - 1) Then
OutTxt = OutTxt & Replace(Txt(i), "???", "")
'Debug.Print OutTxt
Else
OutTxt = OutTxt & "//" & Ext(i - 1) & vbCrLf & "<@>" & vbCrLf & Cod(i) & "//" & Replace(Txt(i), "???", "")
'Debug.Print OutTxt
End If
End If
Else
OutTxt = OutTxt & "//" & Ext(i - 1) & vbCrLf & "<@>" & vbCrLf & Cod(i) & "//" & Txt(i) & "//" & Ext(i)
'Debug.Print OutTxt
End If
Next
Debug.Print OutTxt
End Sub
此代码需要处理的文本是按照顺序排列的。号码和ext相同的需要紧挨在一起
Dim s As String, Cod() As String, Txt() As String
Dim Ext() As String, Mess() As String, i As Byte
Dim OutTxt As String
s = "13798989898//???这是第一条//1010" & _
"<@>" & _
"13798989898//???这是第二条//1010" & _
"<@>" & _
"13763035656//???新的第一条//8888" & _
"<@>" & _
"13763035656//???新的第二条//8888" & _
"<@>" & _
"13763035656//???新的第三条//8888" & _
"<@>" & _
"13512121212//这是正常的//4512" & _
"<@>" & _
"13512128512//这是正常的//4545" & _
"<@>" & _
"13763035656//???新的第一条//8888" & _
"<@>" & _
"13763035656//???新的第二条//8888"Mess = Split(s, "<@>")
ReDim Cod(UBound(Mess))
ReDim Txt(UBound(Mess))
ReDim Ext(UBound(Mess))
For i = 0 To UBound(Mess)
Tmp = Split(Mess(i), "//")
Cod(i) = Tmp(0)
Txt(i) = Tmp(1)
Ext(i) = Tmp(2)
Next
For i = 0 To UBound(Mess)
If InStr(Txt(i), "???") <> 0 Then
If i = 0 Then
OutTxt = Cod(0) & "//" & Replace(Txt(i), "???", "")
' Debug.Print OutTxt
Else
If Ext(i) = Ext(i - 1) And Cod(i) = Cod(i - 1) Then
OutTxt = OutTxt & Replace(Txt(i), "???", "")
' Debug.Print OutTxt
Else
OutTxt = OutTxt & "//" & Ext(i - 1) & vbCrLf & "<@>" & vbCrLf & Cod(i) & "//" & Replace(Txt(i), "???", "")
' Debug.Print OutTxt
End If
End If
Else
OutTxt = OutTxt & "//" & Ext(i - 1) & vbCrLf & "<@>" & vbCrLf & Cod(i) & "//" & Txt(i) '& "//" & Ext(i)
' Debug.Print OutTxt
End If
Next
OutTxt = OutTxt & "//" & Ext(i - 1)
Debug.Print OutTxt
End Sub
Private Sub Form_Load()
Dim s As String, Cod() As String, Txt() As String
Dim Ext() As String, Mess() As String, i As Byte
Dim OutTxt As Strings = "13798989898//这是第一条//1110" & _
"<@>" & _
"13798989898//???这是第一条//1010" & _
"<@>" & _
"13798989898//???这是第二条//1010" & _
"<@>" & _
"13763035656//???新的第一条//8888" & _
"<@>" & _
"13763035656//???新的第二条//8888" & _
"<@>" & _
"13763035656//???新的第三条//8888" & _
"<@>" & _
"13512121212//这是正常的//4512" & _
"<@>" & _
"13512128512//这是正常的//4545" & _
"<@>" & _
"13763035656//???新的第一条//8888" & _
"<@>" & _
"13763035656//???新的第二条//8888"Mess = Split(s, "<@>")
ReDim Cod(UBound(Mess))
ReDim Txt(UBound(Mess))
ReDim Ext(UBound(Mess))
For i = 0 To UBound(Mess)
Tmp = Split(Mess(i), "//")
Cod(i) = Tmp(0)
Txt(i) = Tmp(1)
Ext(i) = Tmp(2)
Next
For i = 0 To UBound(Mess)
If InStr(Txt(i), "???") <> 0 Then
If i = 0 Then
OutTxt = Cod(0) & "//" & Replace(Txt(i), "???", "")
' Debug.Print OutTxt
Else
If Ext(i) = Ext(i - 1) And Cod(i) = Cod(i - 1) Then
OutTxt = OutTxt & Replace(Txt(i), "???", "")
' Debug.Print OutTxt
Else
OutTxt = OutTxt & "//" & Ext(i - 1) & vbCrLf & "<@>" & vbCrLf & Cod(i) & "//" & Replace(Txt(i), "???", "")
' Debug.Print OutTxt
End If
End If
Else
If i = 0 Then
OutTxt = Cod(0) & "//" & Txt(0)
Else
OutTxt = OutTxt & "//" & Ext(i - 1) & vbCrLf & "<@>" & vbCrLf & Cod(i) & "//" & Txt(i) '& "//" & Ext(i)
End If
' Debug.Print OutTxt
End If
Next
OutTxt = OutTxt & "//" & Ext(i - 1)
Debug.Print OutTxt
End Sub