470,618 Members | 1,721 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,618 developers. It's quick & easy.

parsing string, leaving words intact

Hello,

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.

Jul 19 '05 #1
4 4162
Set SP = New StringParser
SP.SetString "This is a test of the string parsing system",30
arrChunks = SP.GetChunks
Set SP = Nothing
For i = 0 To UBound(arrChunks)
msgbox arrChunks(i)
Next

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
Jul 19 '05 #2
Here's a vb SCRIPT way.

<%
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" <an*******@discussions.microsoft.com> wrote in message
news:04****************************@phx.gbl...
Hello,

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.

Jul 19 '05 #3
"meldrape" <an*******@discussions.microsoft.com> wrote in message
news:04****************************@phx.gbl...
Hello,

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.


<%
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
Jul 19 '05 #4
I think I mis-read your question. Sorry about that. I thought you wanted
the first 30 words.

Ray at home

"Ray at <%=sLocation%>" <myfirstname at lane 34 . komm> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
Here's a vb SCRIPT way.

<%
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" <an*******@discussions.microsoft.com> wrote in message
news:04****************************@phx.gbl...
Hello,

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.


Jul 19 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Bell, Kevin | last post: by
32 posts views Thread by tshad | last post: by
13 posts views Thread by Chris Carlen | last post: by
6 posts views Thread by arnuld | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.