Solved

How to Modify Function to Trim a String by Paragraphs Instead of Number of Characters?

Posted on 2004-04-28
6
623 Views
Last Modified: 2012-06-27
I have a function to replace the first x number of characters in a string and not cut them in the middle of words.  Works great.  Question, how can iit be modified to only return, for example, the first two paragraphs (after the </p>)? Running W2K, ASP 3.0.  Here's the code:

In an include file:

FUNCTION TrimString(strString, intLength)
dim a
dim arystring
strString = Replace(strString, vbCrLf, "")
  If Len(strString) > intLength Then
    strString = Left(strString, intLength)
    aryString = Split(strString, " ")
    strString = ""
    For a = 0 to UBound(aryString)-1
      strString = strString & " " & aryString(a)
    Next
    strString = Trim(strString)
    strString = strString & " ..."
  End If
  TrimString = strString
END FUNCTION

----------
to call it on the page

intLength = 300
strString = TrimString(strString, intLength)

Thanks in advance!
0
Comment
Question by:raudi
6 Comments
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 10943337
So you want just the first two paragraphs rather than the first 300 characters (not splitting the word). Is that correct?

Fritz the Blank
0
 
LVL 46

Assisted Solution

by:fritz_the_blank
fritz_the_blank earned 50 total points
ID: 10943381
The idea here is to split your string based on either the VBCrLf or the Chr(10) as the case may be. You will have to try both methods:

FUNCTION TrimString(strString, intParagraphs)
  arrParagraphs = Split(strString, VBCrLf)
   for i=0 to intParagraphs
    strStringReturned = arrParagraphs(i) & VbCrLf
   next
   TrimString = strStringReturned
end function

or:

FUNCTION TrimString(strString, intParagraphs)
  arrParagraphs = Split(strString, Chr(10) )
   for i=0 to intParagraphs
    strStringReturned = arrParagraphs(i) & Chr(10)
   next
   TrimString = strStringReturned
end function
0
 
LVL 21

Accepted Solution

by:
ap_sajith earned 400 total points
ID: 10944327
If you're looking to trim html text, then you can use the following code.

<%
strInput="<P>First para</P><P>second para</P><P>Third para</P><P>Fourth para</P><P>Fifth para</P>"


function TrimText(byVal str)
Dim iPos,iend
If str<>"" Then
      iPos=Instr(1,str,"</p>",1)
      If iPos=0 Then
            TrimText=str
            Exit Function
      End If
      iend=Instr(iPos+1,str,"</P>",1)
      If iend=0 Then
            TrimText = Left(str,iPos+3)
      Else
            TrimText = Left(str,iEnd+3)
      End If
Else
      TrimText = Left(str,iEnd+3)=""
End If
end function
Response.write TrimText(strInput)
%>

cheers!!

0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 7

Assisted Solution

by:chisholmd
chisholmd earned 50 total points
ID: 10946217
You could try to use the regexp object.

You should be able to form a pattern like this:
match <p> then any number of characters of any type ending in </p>
I thin kit would look something like this:

set re = new regexp
re.global=true
re.ignorecase=true
re.pattern= "\<p>.*\</p>?"
set matchSet = re.execute(strToTest)

that should give you a match set collection of all <P>'s then you just use the first two matches if you only want the first two.

There is more regexp info at:
http://www.juicystudio.com/tutorial/asp/regexp.asp

building patterns can be a heck of job to get right but regular expressions are so darn useful it's worth the practice.





0
 

Author Comment

by:raudi
ID: 10949228
I couldn't get fritz the blank's functions to work, but I have so little time to tinker but I gave him some points for speedy response.  

The function from ap_sajith worked the first time out, checks for empty strings and lets me meet a deadline so he gets most points

Some points were also given chisholmd for the regexp object and link (which I once had bookmarked, but lost) which is what I'd like to try, but have no time to pursue.

Tempus fugit...thanks for you help.
R
0
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 10950279
You're welcome and good luck with the project.

FtB
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

I recently decide that I needed a way to make my pages scream on the net.   While searching around how I can accomplish this I stumbled across a great article that stated "minimize the server requests." I got to thinking, hey, I use more than one…
I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:  The Exchange of information …
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now