如何删除重复的字符(字符串)
文本txt的内容格式:
QD 广州
RQ 2008
RQ
TJ 韶关;上饶
...这里还有一些其他内容
QD 深圳
RQ 2010
RQ
TJ 郴州;衡阳
请问:保留【RQ 四位数字】的内容,其余【RQ 】删除,且其下一行内容上移。得到如下内容:
QD 广州
RQ 2008
TJ 韶关;上饶
...这里还有一些其他内容
QD 深圳
RQ 2010
TJ 郴州;衡阳
[解决办法]
dim strArry1() as string
'假设 str="QD 广州
' RQ 2008
' RQ
' TJ 韶关;上饶
' ..."
strArry1=split(str,vbcrlf)
for i=0 to UBound(strArry1)
if trim(strArry1(i))="RQ" then
strArry1(i)=""
endIF
next
str=Join(strArry1,vbcrlf)'str大概就是你要的结果吧
[解决办法]
Private Sub Form_Load()Dim strArry1() As StringDim I As LongDim str As String str = "QD 广州 " str = str & vbCrLf & "RQ 2008" str = str & vbCrLf & " RQ" str = str & vbCrLf & "TJ 韶关;上饶 " str = str & vbCrLf & "QD 深圳" str = str & vbCrLf & "RQ 2010" str = str & vbCrLf & "RQ" str = str & vbCrLf & "TJ 郴州;衡阳" strArry1 = Split(str, vbCrLf) For I = 0 To UBound(strArry1) If Trim(strArry1(I)) = "RQ" Then strArry1(I) = "" End If Next Text1.Text = Replace$(Join(strArry1, vbCrLf), vbCrLf & vbCrLf, vbCrLf)End Sub
[解决办法]
如果数据量大的话,可以试试下面的代码,先引用Microsoft VBScript Regular Expressions 5.5
Private Sub Command1_Click() Open "d:\0.txt" For Binary As #1 a$ = Trim(Input(LOF(1), #1)) Close #1 Set Reg = New RegExp Reg.Pattern = "\nRQ\D*?\n" Reg.Global = True For Each ss In Reg.Execute(a) a = Replace(a, ss.Value, vbCrLf) Next Open "d:\1.txt" For Output As #1 Print #1, a Close #1End Sub
[解决办法]
Sub GetTest() Dim oJs As Object, Str$ Set oJs = CreateObject("ScriptControl"): oJs.Language = "JScript" oJs.eval "function gets(str){return str.replace(/RQ [^\d\d\d\d].+\n/g,'')}" Open App.Path & "\Test.txt" For Input As #1 Str = oJs.codeobject.gets(StrConv(InputB(LOF(1), 1), vbUnicode)): Reset Open App.Path & "\Test.txt" For Output As #1 Print #1, Str: ResetEnd Sub
[解决办法]
Private Sub Command1_Click() Dim tmp1 As String, tmp2 As String, tmp3 As String Open "C:\11\aa.txt" For Binary As #1 tmp1 = StrConv(InputB(LOF(1), 1), vbUnicode): Close #1 While InStr(tmp1, vbNewLine) tmp2 = Mid(tmp1, 1, InStr(tmp1, vbNewLine)) If InStr(tmp2, "RQ") Then tmp3 = Trim(Mid(tmp2, InStr(tmp2, " "))) If IsNumeric(tmp3) And Len(Format(tmp3)) = 4 Then tmp4 = tmp4 & tmp2 Else tmp4 = tmp4 & tmp2 End If tmp1 = Mid(tmp1, Len(tmp2) + 1) Wend tmp4 = tmp4 & tmp1 Open "c:\11\aa.txt" For Output As #1: Print #1, tmp4: Close #1 MsgBox "OK"End Sub
[解决办法]
Open "C:\1.txt" For Input As #1
Open "C:\tmp.txt" For Output As #2
Do Until EOF(1)
Line Input #1, strLine
If Trim(strLine) <> "RQ" Then Print #2, strLine
Loop
Close #2
Close #1
Kill "C:\1.txt"
Name "C:\tmp.txt" As "C:\1.txt"