一个目录下有很多各txt文本文档,想批量解决。文档格式如下:
AD 广州
DR 
   张小品,广州市市政基础设施配置,羊城晚报,1994,(2) 41-42
   王云林,广州经济开发区建设刍议以及策略,南方都市报,2005,16(1) 35-36
   陈昌杰,浅谈珠三角一体化进程,广州日报,2009,17(6) 416-417
   金鹏,广佛一体化利弊谈,特区之窗,2008,13(2) 89-94
ED 1
AB 9AD 上海
DR 
   李少华,杭州市市政基础设施配置,钱江晚报,1998,(1) 441-785
   朱云,杭州高新开发区发展策略丰富的是的是否是大法师的发是的范德萨丰富的方法分丰富丰富风分丰富丰富各顾各,杭州日报,2005,16(1) 35-36
   孔深,长江三角洲一体化发展,新民日报,2009,136(6) 416-417
   向华胜,长三角低于发展协同论,上海商务,2008,13(1040) 89-94
ED 6
AB 5.......文档中还有其他的内容。
关于文档的附加说明:DR与ED之间的这段内容中,有的行文字较长,可能会换行,比如这一行:“朱云,杭州高新开发区发展策略丰富的是的是否是大法师的发是的范德萨丰富的方法分丰富丰富风分丰富丰富各顾各,杭州日报,2005,16(1) 35-36”我的需求:
标记DR后、标记ED前的这一部分内容中,我个人猜想的规则是:先删除第4个逗号以及它后面的内容,然后将第3个逗号以及它后面的内容,放到第1个逗号前面。想实现的效果如下:AD 广州
DR 
   张小品,1994,广州市市政基础设施配置,羊城晚报
   王云林,2005,广州经济开发区建设刍议以及策略,南方都市报
   陈昌杰,2009,浅谈珠三角一体化进程,广州日报
   金鹏,2008,广佛一体化利弊谈,特区之窗
ED 1
AB 9AD 上海
DR 
   李少华,1998,杭州市市政基础设施配置,钱江晚报
   朱云,2005,杭州高新开发区发展策略丰富的是的是否是大法师的发是的范德萨丰富的方法分丰富丰富风分丰富丰富各顾各,杭州日报
   孔深,2009,长江三角洲一体化发展,新民日报
   向华胜,2008,长三角低于发展协同论,上海商务
ED 6
AB 5
麻烦各位大大们帮忙看看,多谢!!

解决方案 »

  1.   

    以下代码测试1楼文本有效,如果楼主的实际文本与之有不同,我就不再说了……Sub GetNewText03()
        Dim oJs As Object, Str$    Open App.Path & "\Test.txt" For Input As #1
        Str = Replace(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf, "↑"): Reset    Set oJs = CreateObject("ScriptControl"): oJs.Language = "JScript"
        oJs.eval "function getnewstr(str){return str.replace(/(\s+[一-龥]+)([\,一-龥]+)(\d{4})([\,\(\)\s\-\d]+)/g,'$1,$3$2')" _
                 & ".replace(/\,↑/g,'↑')}"    Str = Replace(oJs.codeobject.getnewstr(Str), "↑", vbCrLf)
        Open App.Path & "\Test02.txt" For Output As #1
        Print #1, Str: Reset
    End Sub
      

  2.   


    Private Sub Command1_Click()
        Dim f As String, i As Long, tmp1 As String
        Dim tmp2 As String, tmp3() As String
        Dim flg As Boolean, tmp4() As String
        
        f = Dir("c:\11\*.txt")
        While f <> ""
           Open "c:\11\" & f For Binary As #1
           Open "c:\22\" & f For Output As #2
           tmp1 = StrConv(InputB(LOF(1), 1), vbUnicode)
           tmp3 = Split(tmp1, vbNewLine)
           For i = 0 To UBound(tmp3)
               If Trim(tmp3(i)) = "DR" Then
                  flg = True
                  tmp2 = tmp2 + tmp3(i) & vbNewLine
                  i = i + 1
               ElseIf Left(Trim(tmp3(i)), 3) = "ED " Then
                  flg = False
               End If
               
               If flg Then
                  tmp4 = Split(tmp3(i), ",")
                  tmp2 = tmp2 & tmp4(0) & "," & tmp4(3) & "," & tmp4(1) & "," & tmp4(2) & vbNewLine
               Else
                  tmp2 = tmp2 & tmp3(i) & vbNewLine
               End If
           Next
           Print #2, tmp2
           tmp2 = ""
           Close
           f = Dir
        Wend
        MsgBox "finish"
    End Sub
      

  3.   

    alzeng太牛了~~真的不知道要怎么感谢了,帮了我这么多!!感激涕零!!
    同时LS的也很好。总之,实在是太感谢了!!!!!!
    结贴
      

  4.   


    5555,大佬。再帮我一次吧这几天在新增加的内容中,发现文本格式变多了,全部总结如下(绝对完整,不会再麻烦您了。。):AD 广州
    DR  
       张志强,西部大开发战略进程,西北日报,2009,17(6) 416-417
       朱晓婉,谈企业2.0的内涵与外延,北京:中国科学技术出版社,1999,(2) 41-42
       李曙光,Microsoft中国发展策略,南方都市报,2005,11(20) 35-36
       刘华兰,2010年A股swot分析,中国证券报,2008,16(1) 35-36
       William Shakespeare H,2000 AD Graphic Novels website where Squaxx dex,Borag Thungg,2008,13(2) 89-94
       Alahakoon D,Dynamic self organizing maps with controlled growth for knowledge discovery,Special Issue on Knowledge Discovery and Data Mining,2000,11(3),601-614
    ED 1
    AB 9除了全汉字外,字符串中还多出了大小写字母、数字。这里“.replace(/(\s+[一-龥]+)([\,一-龥]+)(\d{4})([\,\(\)\s\-\d]+)/g,'$1,$3$2')" _
                 & ".replace(/\,↑/g,'↑')}"
    ”这里改不好。匹配不到。。
    大大,能不能再帮我看一下啊。。
      

  5.   

    已经转移到:http://topic.csdn.net/u/20101021/14/9983e433-bc85-4d50-9ba2-633e207d28da.html?10041