如何将一个含有特殊符号的文本按要求大小分割成几个文本?特殊符号如:“ ”。 使用Do While Not EOF(1)、LineInput语句循环读取,当它读到此符号时,会认为已经到文本末尾,不再读取后面的字符。 
请问各位高手,这该如何解决? 感激不尽!

解决方案 »

  1.   

    Text1.Text="ssssssssssss
    aaaaaaaa→bbbb
    ccccccc
    ddddddddd→fff
    ggggg"Private Sub Command1_Click()
        Dim s As String, i As Long, sFile As String
        Dim sNe() As String
        s = Text1.Text
        sNe = Split(s, "→")
        For i = 0 To UBound(sNe)
           sFile = "D:\DDOWNLOAD\aa" & CStr(i) & ".txt"
           Open sFile For Output As #1
           Print #1, sNe(i)
           Close #1
        Next i
    End Sub
      

  2.   

    测试数据:
     ”。 
     ”。 
     ”。  ”。  ”。  ”。  ”。 
     ”。  ”。  ”。  ”。  ”。 
     ”。  ”。  ”。  ”。 
    215415 ”。 216
     ”。 
     ”。 
     ”。 
     ”。 
    215
    Private Sub Command1_Click()
    Dim arr() As String, arr1() As String
    Dim i As Long, s As Long, Count As Long
    Dim sFile As String, Result1, Result2 As String  Open "c:\1.txt" For Binary As #1
        sFile = Space(LOF(1))
        Get #1, , sFile
        Close #1
        
         arr = Split(sFile, vbCrLf)
         For i = 0 To UBound(arr)
            Count = Count + 1
         Next i
      
         For i = 0 To Count / 2
           Result1 = Result1 & arr(i) & vbCrLf
         Next i
        
         For s = Count / 2 To UBound(arr)
           Result2 = Result2 & arr(s) & vbCrLf
         Next s
          
          
          Open "c:\文件1.txt" For Output As #1
            Print #1, Result1
           Close #1
           
          Open "c:\文件2.txt" For Output As #2
            Print #2, Result2
            MsgBox "数据分割完成"
           Close #2
        
    End Sub
      

  3.   


    Private Sub Command1_Click()
    Dim arr() As String, arr1() As String
    Dim i As Long, s As Long, Count As Long
    Dim sFile As String, Result1, Result2 As String  Open "c:\1.txt" For Binary As #1
        sFile = Space(LOF(1))
        Get #1, , sFile
        Close #1
        
         arr = Split(sFile, vbCrLf)
         For i = 0 To UBound(arr)
            Count = Count + 1
         Next i
     
        
         For i = 0 To Format(Count / 2, "#") - 2
           Result1 = Result1 & arr(i) & vbCrLf
         Next i
        
         For s = Count / 2 To UBound(arr)
           Result2 = Result2 & arr(s) & vbCrLf
         Next s
          
          
          Open "c:\文件1.txt" For Output As #1
            Print #1, Result1
           Close #1
           
          Open "c:\文件2.txt" For Output As #2
            Print #2, Result2
            MsgBox "数据分割完成"
           Close #2
        
    End Sub
      

  4.   

    goosen老大,你的代码确实可以将这种文本文件分割成几个,但是效率有点低,一旦遇到比较大的文本文件,那可能造成假死的状态。我个人觉得先用Binary方式从文本文件的1字节开始读取,直到到要求的N字节大小,保存成第一个文件;下个文件再从N个字节以后的开始读取,长度大小与上一个一样,保存为第二个文件,这样循环读取下去,知道完。不过这种读取方法我不怎么了解,不知道可不可行。能有别的方法吗?谢谢了!
      

  5.   

    先用Binary方式从文本文件的1字节开始读取,直到到要求的N字节大小,保存成第一个文件;下个文件再从N个字节以后的开始读取,长度大小与上一个一样,保存为第二个文件,这样循环读取下去,直到完。我有试过,第一个文本读取正常,但到第二个的时候,从N个字节以后的开始读取,总是不正确,会变成大于N个字节开始读取,每次都会丢失一大段内容。里面用到lof()函数。它是不是不能正确计算出中文和英文的长度啊?这个问题该如何解决呢?
      

  6.   

    http://topic.csdn.net/u/20090615/20/43a76a1b-b156-4e16-9bc4-2fb0b94fce6e.html我在这个帖子中回复了一个用内存映射API处理大文本的代码, 稍微修改就能完成你所需的功能。