Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2004-04-28
6
Medium Priority
?
641 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 200 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 1600 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 7

Assisted Solution

by:chisholmd
chisholmd earned 200 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

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever needed to get an ASP script to wait for a while? I have, just to let something else happen. Or in my case, to allow other stuff to happen while I was murdering my MySQL database with an update. The Original Issue This was written…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signal…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…
Suggested Courses
Course of the Month12 days, 19 hours left to enroll

972 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