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

怎么删除重复的字符(字符串)

2012-04-09 
如何删除重复的字符(字符串)文本txt的内容格式:QD 广州RQ 2008RQTJ 韶关上饶...这里还有一些其他内容QD

如何删除重复的字符(字符串)
文本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大概就是你要的结果吧

[解决办法]

VB code
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

VB code
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
[解决办法]
VB code
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
[解决办法]
VB code
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"

热点排行