Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old July 19th, 2005, 09:20 AM
meldrape
Guest
 
Posts: n/a
Default 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.

  #2  
Old July 19th, 2005, 09:21 AM
dlbjr
Guest
 
Posts: n/a
Default Re: parsing string, leaving words intact

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


  #3  
Old July 19th, 2005, 09:21 AM
Ray at
Guest
 
Posts: n/a
Default Re: parsing string, leaving words intact

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" <anonymous@discussions.microsoft.com> wrote in message
news:04d801c39f3a$fd9c62f0$a301280a@phx.gbl...[color=blue]
> 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.
>[/color]


  #4  
Old July 19th, 2005, 09:21 AM
Chris Hohmann
Guest
 
Posts: n/a
Default Re: parsing string, leaving words intact

"meldrape" <anonymous@discussions.microsoft.com> wrote in message
news:04d801c39f3a$fd9c62f0$a301280a@phx.gbl...[color=blue]
> 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.
>[/color]

<%
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


  #5  
Old July 19th, 2005, 09:21 AM
Ray at
Guest
 
Posts: n/a
Default Re: parsing string, leaving words intact

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:%23BsT4x2nDHA.3700@TK2MSFTNGP11.phx.gbl...[color=blue]
> 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" <anonymous@discussions.microsoft.com> wrote in message
> news:04d801c39f3a$fd9c62f0$a301280a@phx.gbl...[color=green]
> > 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.
> >[/color]
>
>[/color]


 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles