Solved

ASP.NET / VB / REGEX: Automatically Make Headings Bold

Posted on 2012-03-30
7
462 Views
Last Modified: 2012-04-01
Using REGEX with ASP.NET / VB, how can I format plain text to make the headings bold?  Text is a heading if:
- It is 100 character or shorter than
- The first and last word begin with a capital letter
- It does not end with a period or a comma or a hyphen or a question mark or a colon
- There are one or more line breaks before it
- There are exactly two line breaks after it

input = RegularExpressions.Regex.Replace(input,  ????, "<strong>???</strong>")

Open in new window




-------------------------------------------------

Hello World

This is a test and only a test.  The heading above should be bold.

This is a Heading!

The heading above should be bold.  If it had ended with a question mark or a period or a comma or a hyphen it should not have been bold.

ALL CAPS HEADING

The heading above should be bold.
0
Comment
Question by:hankknight
  • 4
  • 3
7 Comments
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 37789507
Try:

input = RegularExpressions.Regex.Replace(input, "(\n)(?=.{1,100}\n)([A-Z][a-z]*(?:(?: [a-z]+)* [A-Z][a-z]*)?)(\r\n\r\n)", "$1<strong>$2</strong>$3")

Open in new window

0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 37789513
P.S.

If by "line break" you actually mean an HTML <br /> tag, then you can replace the single \n and the two \r\n with "<br ?/?>":

input = RegularExpressions.Regex.Replace(input, "(<br ?/?>)(?=.{1,100}\n)([A-Z][a-z]*(?:(?: [a-z]+)* [A-Z][a-z]*)?)(<br ?/?><br ?/?>)", "$1<strong>$2</strong>$3")

Open in new window

0
 
LVL 16

Author Comment

by:hankknight
ID: 37792116
Thanks but it is not working for me:


input = "Hello World" + VbNewLine + VbNewLine + "This is a test and only a test.  The heading above should be bold. " + VbNewLine +VbNewLine + "This is a Heading!" + VbNewLine +VbNewLine + "The heading above should be bold.  If it had ended with a question mark or a period or a comma or a hyphen it should not have been bold." + VbNewLine +VbNewLine + "ALL CAPS HEADING" + VbNewLine + VbNewLine + "The heading above should be bold. "
input = RegularExpressions.Regex.Replace(input, "(\n)(?=.{1,100}\n)([A-Z][a-z]*(?:(?: [a-z]+)* [A-Z][a-z]*)?)(\r\n\r\n)", "$1<strong>$2</strong>$3q")
input = RegularExpressions.Regex.Replace(input, VbNewLine + "- ", VbNewLine + "&#8226; ")
input = RegularExpressions.Regex.Replace(input, VbNewLine, VbNewLine +"<br />")
return input

Open in new window

0
Does Powershell have you tied up in knots?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 37792153
Because you don't have a leading line break. Your requirement said: "There are one or more line breaks before it." Your example does not match this requirement.
0
 
LVL 16

Author Comment

by:hankknight
ID: 37793241
Thanks, but I am still having trouble with it.

"The first and last word begin with a capital letter" however the code below only works if the heading is two words long.

It should make the line bold if the first and last word begin with bold letters but it should not matter if other words inside the heading do not begin with capital letters.

input = VbNewLine + VbNewLine + "Bold Heading One" + VbNewLine + VbNewLine + "This is a test and only a test.  The heading above should be bold." + VbNewLine +VbNewLine + "Heading 2 Should be Bold" + VbNewLine +VbNewLine + "The heading above should be bold.  If it had ended with a question mark or a period or a comma or a hyphen it should not have been bold." + VbNewLine +VbNewLine + "Bold Heading" + VbNewLine + VbNewLine + "The heading above should be bold. "
input = RegularExpressions.Regex.Replace(input, "(\n)(?=.{1,100}\n)([A-Z][a-z]*(?:(?: [a-z]+)* [A-Z][a-z]*)?)(\r\n\r\n)", "$1<strong>$2</strong>$3")
input = RegularExpressions.Regex.Replace(input, VbNewLine + "- ", VbNewLine + "&#8226; ")
input = RegularExpressions.Regex.Replace(input, VbNewLine, VbNewLine +"<br />")
return input

Open in new window

0
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 37793272
I took the requirement, "The first and last word begin with a capital letter," as *only* the first and last letter should be capitalized. It's easy enough to fix, though.

...
input = RegularExpressions.Regex.Replace(input, "(\n)(?=.{1,100}\n)([A-Z][a-z]*(?:(?: [a-zA-Z]+)* [A-Z][a-z]*)?)(\r\n\r\n)", "$1<strong>$2</strong>$3")
...

Open in new window

0
 
LVL 16

Author Comment

by:hankknight
ID: 37793363
0

Featured Post

ScreenConnect 6.0 Free Trial

Explore all the enhancements in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI, app configurations and chat acknowledgement to improve customer engagement!

Question has a verified solution.

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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

831 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