Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP General > Adjusting string handling function for exceptions?

Reply
Thread Tools

Adjusting string handling function for exceptions?

 
 
Ken Fine
Guest
Posts: n/a
 
      04-04-2004
No joy on Macromedia's boards after a few days; maybe someone can help me
here.

I got an excellent string handling function off of planet-source-code.com
that converts text strings to proper case, i.e. "the REMAINS of the DAY" is
converted to "The Remains Of The Day".

This function is particularly good in that it handles certain exceptions.
Can you help me make it handle more? I'm interested in two tweaks, one easy,
one hard.

The easy tweak: I have certain acronyms that I'd always like to NOT be
converted into proper case -- I want them all upper. For instance, "ASCII",
"SCSI" and "IDE" shouldn't be rendered as "Ascii" "Scsi" and "Ide". The list
of exceptions is short and I'd be fine hardcoding them into the function.

The hard tweak: Certain "noise words" such as "is" "and" and "but" don't
belong in proper case. I don't want them capitalized at all UNLESS they're
the first word in the string.

Can any stringmeisters take a crack at this? Code appears below. If anyone
can help out with at least the first item, I'd be most appreciative.

-KF
Adjusting string handling function for exceptions?


 
Reply With Quote
 
 
 
 
Ken Fine
Guest
Posts: n/a
 
      04-04-2004
Bah, the code, the code:
<%
' ================================================== ===============
' Reformat "txtName" to proper case.
' Output = String
' ================================================== ===============
Function ProperName(txtName)
Dim txtRest, txtTmp, intSpcPos
txtRest = LCase(txtName)

'Single Quote
intTckPos = InStr(1, txtRest, "'",1)
if intTckPos <> 0 then
txtTmp = UCase(Mid(txtRest, intTckPos + 1, 1))
txtRest = Left(txtRest, intTckPos) & txtTmp & Mid(txtRest, intTckPos
+ 2, Len(txtRest))
txtTmp = ""
end if

'Hypenated
intDshPos = InStr(1, txtRest, "-",1)
if intDshPos <> 0 then
txtTmp = UCase(Mid(txtRest, intDshPos + 1, 1))
txtRest = Left(txtRest, intDshPos) & txtTmp & Mid(txtRest, intDshPos
+ 2, Len(txtRest))
txtTmp = ""
end if

'MC
intMcPos = InStr(1,txtRest,"mc",1)
if intMcPos <> 0 then
txtTmp = UCase(Mid(txtRest, intMcPos+2, 1))
txtRest = Left(txtRest, intMcPos+1) & txtTmp & Mid(txtRest,
intMcPos+3, Len(txtRest))
txtTmp = ""
end if

'Space
intSpcPos = InStr(1, txtRest, " ")
Do While intSpcPos <> 0
txtTmp = txtTmp & UCase(Left(txtRest, 1)) & Mid(txtRest,
2,(intSpcPos - 1))
txtRest = Mid(txtRest, intSpcPos + 1, Len(txtRest))
intSpcPos = InStr(1, txtRest, " ")
Loop

'Output
ProperName = txtTmp & UCase(Left(txtRest, 1)) & Mid(txtRest,
2,Len(txtRest))
End Function
' ================================================== ===============
%>



"Ken Fine" <(E-Mail Removed)> wrote in message
news:%23g$(E-Mail Removed)...
> No joy on Macromedia's boards after a few days; maybe someone can help me
> here.
>
> I got an excellent string handling function off of planet-source-code.com
> that converts text strings to proper case, i.e. "the REMAINS of the DAY"

is
> converted to "The Remains Of The Day".
>
> This function is particularly good in that it handles certain exceptions.
> Can you help me make it handle more? I'm interested in two tweaks, one

easy,
> one hard.
>
> The easy tweak: I have certain acronyms that I'd always like to NOT be
> converted into proper case -- I want them all upper. For instance,

"ASCII",
> "SCSI" and "IDE" shouldn't be rendered as "Ascii" "Scsi" and "Ide". The

list
> of exceptions is short and I'd be fine hardcoding them into the function.
>
> The hard tweak: Certain "noise words" such as "is" "and" and "but" don't
> belong in proper case. I don't want them capitalized at all UNLESS they're
> the first word in the string.
>
> Can any stringmeisters take a crack at this? Code appears below. If anyone
> can help out with at least the first item, I'd be most appreciative.
>
> -KF
> Adjusting string handling function for exceptions?
>
>



 
Reply With Quote
 
 
 
 
Chris Hohmann
Guest
Posts: n/a
 
      04-04-2004
"Ken Fine" <(E-Mail Removed)> wrote in message
news:%23g$(E-Mail Removed)...
> No joy on Macromedia's boards after a few days; maybe someone can help

me
> here.
>
> I got an excellent string handling function off of

planet-source-code.com
> that converts text strings to proper case, i.e. "the REMAINS of the

DAY" is
> converted to "The Remains Of The Day".
>
> This function is particularly good in that it handles certain

exceptions.
> Can you help me make it handle more? I'm interested in two tweaks, one

easy,
> one hard.
>
> The easy tweak: I have certain acronyms that I'd always like to NOT be
> converted into proper case -- I want them all upper. For instance,

"ASCII",
> "SCSI" and "IDE" shouldn't be rendered as "Ascii" "Scsi" and "Ide".

The list
> of exceptions is short and I'd be fine hardcoding them into the

function.
>
> The hard tweak: Certain "noise words" such as "is" "and" and "but"

don't
> belong in proper case. I don't want them capitalized at all UNLESS

they're
> the first word in the string.
>
> Can any stringmeisters take a crack at this? Code appears below. If

anyone
> can help out with at least the first item, I'd be most appreciative.
>
> -KF
> Adjusting string handling function for exceptions?


Here's an article:
http://aspfaq.com/show.asp?id=2299

Here's a modified version of the code found in that article:
<script language="JScript" runat="SERVER">
function pCase(s){
//Proper Case
s = s.replace(/(\w)(\w*)/gi,function(m,c1,c2,p,s){return
c1.toUpperCase() + c2.toLowerCase();});
//MC
s = s.replace(/\bmc(\w)/gi,function(m,c1,p,s){return "Mc" +
c1.toUpperCase();});
// Lowers
s = s.replace(/\b(is|and|but)\b/gi,function(m,p,s){return
m.toLowerCase();});
// Uppers (First letter of sentence and abbreviations)
s = s.replace(/^\w|\b(ascii|scsi|ide)\b/gi,function(m,p,s){return
m.toUpperCase();});
return s;
}
Response.Write(pCase('bill o\'reilly') + '<br>');
Response.Write(pCase('bill van der wal') + '<br>');
Response.Write(pCase('mr. moseley-williams') + '<br>');
Response.Write(pCase('Joe VanWyck') + '<br>');
Response.Write(pCase('is rOnAlD mCdOnAlD someone who uses ascii, scsi,
and ide?') + '<br>');
</script>

HTH
-Chris Hohmann


 
Reply With Quote
 
Ken Fine
Guest
Posts: n/a
 
      04-04-2004
Thanks, Chris. Here's another VBScript solution that's pretty nice; you can
define a list of exceptions within the function:
http://www.15seconds.com/howto/pg000078.htm

-KF

"Chris Hohmann" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "Ken Fine" <(E-Mail Removed)> wrote in message
> news:%23g$(E-Mail Removed)...
> > No joy on Macromedia's boards after a few days; maybe someone can help

> me
> > here.
> >
> > I got an excellent string handling function off of

> planet-source-code.com
> > that converts text strings to proper case, i.e. "the REMAINS of the

> DAY" is
> > converted to "The Remains Of The Day".
> >
> > This function is particularly good in that it handles certain

> exceptions.
> > Can you help me make it handle more? I'm interested in two tweaks, one

> easy,
> > one hard.
> >
> > The easy tweak: I have certain acronyms that I'd always like to NOT be
> > converted into proper case -- I want them all upper. For instance,

> "ASCII",
> > "SCSI" and "IDE" shouldn't be rendered as "Ascii" "Scsi" and "Ide".

> The list
> > of exceptions is short and I'd be fine hardcoding them into the

> function.
> >
> > The hard tweak: Certain "noise words" such as "is" "and" and "but"

> don't
> > belong in proper case. I don't want them capitalized at all UNLESS

> they're
> > the first word in the string.
> >
> > Can any stringmeisters take a crack at this? Code appears below. If

> anyone
> > can help out with at least the first item, I'd be most appreciative.
> >
> > -KF
> > Adjusting string handling function for exceptions?

>
> Here's an article:
> http://aspfaq.com/show.asp?id=2299
>
> Here's a modified version of the code found in that article:
> <script language="JScript" runat="SERVER">
> function pCase(s){
> //Proper Case
> s = s.replace(/(\w)(\w*)/gi,function(m,c1,c2,p,s){return
> c1.toUpperCase() + c2.toLowerCase();});
> //MC
> s = s.replace(/\bmc(\w)/gi,function(m,c1,p,s){return "Mc" +
> c1.toUpperCase();});
> // Lowers
> s = s.replace(/\b(is|and|but)\b/gi,function(m,p,s){return
> m.toLowerCase();});
> // Uppers (First letter of sentence and abbreviations)
> s = s.replace(/^\w|\b(ascii|scsi|ide)\b/gi,function(m,p,s){return
> m.toUpperCase();});
> return s;
> }
> Response.Write(pCase('bill o\'reilly') + '<br>');
> Response.Write(pCase('bill van der wal') + '<br>');
> Response.Write(pCase('mr. moseley-williams') + '<br>');
> Response.Write(pCase('Joe VanWyck') + '<br>');
> Response.Write(pCase('is rOnAlD mCdOnAlD someone who uses ascii, scsi,
> and ide?') + '<br>');
> </script>
>
> HTH
> -Chris Hohmann
>
>



 
Reply With Quote
 
Chris Hohmann
Guest
Posts: n/a
 
      04-04-2004
"Ken Fine" <(E-Mail Removed)> wrote in message
news:OR$(E-Mail Removed)...
> Thanks, Chris. Here's another VBScript solution that's pretty nice;

you can
> define a list of exceptions within the function:
> http://www.15seconds.com/howto/pg000078.htm


It does not handle "McDonald". The code is also somewhat more difficult
to follow, IMHO. One thing it does do is check for apostrophes followed
by "s" or "t", like in the abbreviations "it's" and "don't". The same
can be achieved in the code I provided by including 't and 's in the
"Lowers" expression. Here's the new regular expression:

/\b(is|and|but|'t|'s)\b/gi

Please note that this change will fail for names like O'Shawnessey and
O'Toole.

HTH
-Chris Hohmann



 
Reply With Quote
 
zhuzijie
Guest
Posts: n/a
 
      04-08-2004

Chris Hohmann <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "Ken Fine" <(E-Mail Removed)> wrote in message
> news:OR$(E-Mail Removed)...
> > Thanks, Chris. Here's another VBScript solution that's pretty nice;

> you can
> > define a list of exceptions within the function:
> > http://www.15seconds.com/howto/pg000078.htm

>
> It does not handle "McDonald". The code is also somewhat more difficult
> to follow, IMHO. One thing it does do is check for apostrophes followed
> by "s" or "t", like in the abbreviations "it's" and "don't". The same
> can be achieved in the code I provided by including 't and 's in the
> "Lowers" expression. Here's the new regular expression:
>
> /\b(is|and|but|'t|'s)\b/gi
>
> Please note that this change will fail for names like O'Shawnessey and
> O'Toole.
>
> HTH
> -Chris Hohmann
>
>
>



 
Reply With Quote
 
 
 
Reply

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 On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Adjusting to screen width VJ ASP .Net 5 05-26-2004 01:56 AM
Adjusting security setting to run an embedded windows control in IE Marina ASP .Net 16 02-05-2004 04:03 PM
adjusting datagrid column width Nedu N ASP .Net 2 01-20-2004 03:29 AM
Adjusting BGP advertisements Michael Munford Cisco 6 12-19-2003 05:02 PM
Adjusting client's .net trust level Hagay Lupesko ASP .Net 1 10-20-2003 04:59 PM



Advertisments