Sam
Sam

Reputation: 4487

Splitting a string in ASP Classic

So here's my string:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam elit lacus, dignissim quis laoreet non, cursus id eros. Etiam lacinia tortor vel purus eleifend accumsan. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque bibendum vestibulum nisl vitae volutpat.

I need to split it every 100 characters (full words only) until all the characters are used up.

So we'd end up with:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam elit lacus, dignissim quis laoreet non,

and

cursus id eros. Etiam lacinia tortor vel purus eleifend accumsan. Pellentesque habitant morbi tristique

and

senectus et netus et malesuada fames ac turpis egestas. Quisque bibendum vestibulum nisl vitae volutpat.

Any ideas on the best way to do that?

Upvotes: 1

Views: 5654

Answers (3)

Todd
Todd

Reputation: 11

I needed to count the spaces as well as have it as a function...here is what I came up with...

Function wordSubstring(txtString,maxLen)
    words = Split(txtString," ")
    charCounter = 0
    stringSection = ""
    For Each word IN words
        stringSection = stringSection & word
        charCounter = len(stringSection)
        if charCounter >= maxLen Then
            wordSubstring=stringSection
            exit For
        else
            stringSection = stringSection & " "
        end If
    Next
    wordSubstring = stringSection
End Function

Upvotes: 1

Daniel Vassallo
Daniel Vassallo

Reputation: 344371

First you may want to split your string with the space character as a delimiter. Then start with an empty string, iterate over each word in the array, concatenate each word to the new string until the number of words exceeds 100:

str = "Lorem ipsum ...."
words = Split(str)
stringSection = ""
wordCounter = 0

FOR EACH word IN words
   stringSection = stringSection & word
   wordCounter = wordCounter + 1

   IF wordCounter >= 100 THEN
      Response.Write(stringSection & "<BR /><BR />")

      wordCounter = 0
      stringSection = ""
   ELSE
      stringSection = stringSection & " "
   END IF
NEXT

Response.Write(stringSection & "<BR /><BR />")

Note that the last Response.Write is necessary to handle the last stringSection, even though it might have not exceeded the 100 words.

Upvotes: 2

Thomas Kj&#248;rnes
Thomas Kj&#248;rnes

Reputation: 1927

Since Daniel replied with actual code similar to my description, I'm gonna go with a different suggestion. I might be one character off with count. This code prints the start/end offsets and the substrings. What YOU need to do is modify this to save the strings in an array instead:

<%

Dim LoremIpsum

    LoremIpsum = "Lorem ipsum dolor sit amet....."

    Response.Write LoremIpsum & "<br>"

    SplitWords LoremIpsum, 100


Function SplitWords(text, maxlen)

Dim c, i, j, l

    l = Len(text)
    i = 1
    j = maxlen

    Do While (j < l And Response.IsClientConnected)

        c = Mid(text, j, 1)

        Do While (c <> " " And j > i)

            j = j - 1

            c = Mid(text, j, 1)

        Loop

        Response.Write(i & "<br>")
        Response.Write(j & "<br>")

        s = Mid(text, i, j-i)

        Response.Write(s & "<br>")

        i = j
        j = j + maxlen

    Loop


End Function

%>

Upvotes: 4

Related Questions