I need to parse a long string into no more than 30
character chunks, but I also need to leave the words
intact. Right now, I am using:
For intStart = 1 to Len(strOriginal) by 30
strPrint = Mid$(strOriginal, intStart, 30)
Print #detailFile, Tab(1), intStart, Tab(4), strPrint
Next intStart
and it's fine, but splits up some of the words. If I
could figure out how to find the preceding space of the
30 limit, I'd be in good shape. Any thoughts would be
appreciated. Many thanks in advance.
Class StringParser
Private mintCounter
Private mintBreak
Private marrData
Private mDic
Private Sub Class_Initialize()
mintBreak = 0
mintCounter = 0
Set mDic = CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
Set mDic = Nothing
End Sub
Public Function GetChunks()
GetChunks = mDic.Items
End Function
Public Sub SetString(strData,intChunkLength)
strData = Trim(strData)
If IsNumeric(intChunkLength) Then
mintBreak = Abs(intChunkLength) \ 1
End If
If Len(strData) > 0 And mintBreak > 0 Then
marrData = Split(strData," ")
For i = 0 To UBound(marrData)
strItem = marrData(i)
If Len(strChunk) + Len(strItem) <= mintBreak Then
strChunk = Trim(strChunk & " " & strItem)
Else
AddChunk strChunk
strChunk = strItem
End If
Next
End If
AddChunk strChunk
End Sub
Private Sub AddChunk(strChunk)
If Len(strChunk) > 0 Then
mintCounter = mintCounter + 1
mDic.Add mintCounter,strChunk
End If
End Sub
End Class
-dlbjr
Discerning resolutions for the alms
<%
TheString = "I need to parse a long string into no more than 30 character
chunks, but I also need to leave the words intact. Right now, I am using
and it's fine, but splits up some of the words. If I could figure out how
to find the preceding space of the 30 limit, I'd be in good shape. Any
thoughts would be appreciated. Many thanks in advance."
'''clear out any double+ spaces
Do While Instr(TheString, " ") > 0
TheString = Replace(TheString, " ", " ")
Loop
aParts = Split(TheString, " ")
Redim Preserve aParts(29)
For q = 0 To 29
Response.Write aParts(q) & "<br>"
Next
%>
Ray at home
"meldrape" <anon...@discussions.microsoft.com> wrote in message
news:04d801c39f3a$fd9c62f0$a301...@phx.gbl...
<%
Const s = "Pneumonoultramicroscopicsilicovolcanoconiosis is the longest
word in the English dictionary. For those that are interested, it's a
disease of the lungs which is caused by silica dust.
123456789012345678901234567890"
Dim re,arr
Set re = New RegExp
re.Global = True
re.Pattern = "\S{30}|.{1,29}(\s|$)"
Set matches = re.execute(s)
Response.Write "<pre>"
For Each match in matches
Response.Write vbTab & match.FirstIndex & vbTab & vbTab & vbTab & vbTab
& match.Value & vbCRLF
Next
Response.Write "</pre>"
%>
Modifying the code to write to a file instead of to the browser is left
as an exercise for the reader.
HTH
-Chris Hohmann
Ray at home
"Ray at <%=sLocation%>" <myfirstname at lane 34 . komm> wrote in message
news:%23BsT4x2...@TK2MSFTNGP11.phx.gbl...