有个字段大约有2000长度
每次取100个
其中如果100个以内有回车符号则就取到回车前一个(也就说如果有回车就不能满100个字符了)
然后继续取下100个直到把这2000个取完
这个用vb如何写?
以下是我写的,不知道该如何处理 回车符号那,请各位高手执教Dim rst As ADODB.Recordset
Dim k As Integer
Dim nStr As Integer
Dim nPos As Integer
Dim slef As String
k = rstcount / 100
              nStr = rst.Fields("a")
                    For lcount = 0 To k
                         nPos = InStr(nStr,vbCrLf)
                         If nPos > 0 Then
                            sleft = Left(nStr, nPos - 1)
                            nStr = Right(nStr, Len(nStr) - nPos)
                         Else
                            sleft = Left(nStr, 100)
                            nStr = Right(nStr, Len(nStr) - 100)
                         End If
                     Next

解决方案 »

  1.   

    InStr(str, Chr(10))返回回车字符的位置
      

  2.   

    我写了一个,但没测试,你调调看
    sStr原始string,sSubdo until len(sStr)=0 then
      i=instr(sStr,chr(10))
      if i>=100 then
        i=100
      end if
      sSub=left(sStr,i)
      sStr=Right(sStr, Len(sStr) - i)
    loop
      

  3.   

    do until len(sStr)=0 then
    循环有点问题,死循环了
      

  4.   

    我测试了一下,如果循环到i = 0 但是len(sStr)<>0 这个循环就走不下去了
      

  5.   

    do until len(sStr)=0 then
      i=instr(sStr,chr(10))
      if i>=100 then
        i=100
      end if
      If i = 0 Then
        If Len(sStr) > 100 Then
          i = 100
        Else
          i = Len(sStr)
        End If
      sSub=left(sStr,i)
      sStr=Right(sStr, Len(sStr) - i)
    loop加点东西
      

  6.   

    写个方便点的函数给你!
    Private Function F(ByVal str As String) As Variant
        Dim i, j As Integer
        Dim a() As String
        j = 0
        ReDim Preserve a(j)
        For i = 1 To Len(str)
        Debug.Print Mid(str, i, 1)
            If Mid(str, i, 1) = Chr(10) Or Len(a(j)) = 100 Then
                j = j + 1
                ReDim Preserve a(j)
            End If
        
            If Mid(str, i, 1) <> Chr(10) Then
                a(j) = a(j) & Mid(str, i, 1)
            End If
        Next
    End FunctionPrivate Sub Command1_Click()
    Dim a() As String
    a = F(Text1)
    End Sub
      

  7.   

    写个方便点的函数给你!
    Private Function F(ByVal str As String) As Variant
        Dim i, j As Integer
        Dim a() As String
        j = 0
        ReDim Preserve a(j)
        For i = 1 To Len(str)
            If Mid(str, i, 1) = Chr(10) Or Len(a(j)) = 100 Then
                j = j + 1
                ReDim Preserve a(j)
            End If
        
            If Mid(str, i, 1) <> Chr(10) Then
                a(j) = a(j) & Mid(str, i, 1)
            End If
        Next
        F = a
    End FunctionPrivate Sub Command1_Click()
    Dim a() As String
    a = F(Text1)
    End Sub
      

  8.   

    最短精简的函数。
    Private Function DivideUp(ByVal SRCData As String) As Collection
        Dim lPosKey As Long
        Set DivideUp = New Collection
        Do Until CBool(Len(SRCData) = 0)
            lPosKey = InStr(SRCData, Chr(10))
            lPosKey = IIf(0 < lPosKey And lPosKey < 101, lPosKey - 1, 100)
            Call DivideUp.Add(Left$(SRCData, lPosKey))
            SRCData = Mid$(SRCData, lPosKey + IIf(0 < lPosKey And lPosKey < 100, 2, 1))
        Loop
    End Function