There may be a more efficient solution, but here's what I came up with:
function ToCase(text, CaseSelection)
{
switch (ToLower(CaseSelection))
{
case "allcaps":
case "uppercase":
return ToUpper(text);
case "lowercase":
return ToLower(text);
case "propercase":
return ToTitleCase(text);
case "smallcaps":
return "<smallcap>" + text + "</smallcap>";
default:
return text;
}
}
var CaseSelection="propercase";
var text = "hi there CEO of the big corp.";
var Exceptions = [ "CEO", "CFO", "VP", "and", "the", "of", "to" ];
var result = ToCase(text, CaseSelection);
for (var i in Exceptions)
{
var re = RegExp("\\b" + Exceptions[i] + "\\b", "gi");
result = result.replace(re, Exceptions[i]);
}
return result;
Note how, if you validate this as written, the word "There" in the
result is still capitalized, while the word "the" is not. This is
because I'm using the \b modifier on the regular expression to denote
word boundaries, so that only whole words get replaced.
Also, the whole exceptions thing won't really affect the "smallcaps"
case. That's really the odd man out here anyway; I would think that you
would probably want to combine title case with smallcaps.
Finally, my usual caveat applies here: Know Thy Data. You can keep
adding exceptions as you discover them, but this is never going to be a
comprehensive solution, because you'll never be able to come up with the
full list of exceptions to "title case" or "proper case" logic. The
English language is just too complex for that, and the number of proper
nouns (names) which do not fit the pattern is basically unlimited
(McDonald's, Mies van der Rohe, USA, etc.) There are some kinds of
things that simply can't be reduced to an algorithm.
Dan
--
Users of FusionPro Desktop have unlimited free email support. Contact Printable
Support at [EMAIL PROTECTED]
--
View FusionPro Knowledge Base, FusionPro Samples at
www.printable.com/vdp/desktop.htm
--
You are currently subscribed to fusionpro as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]
--
--
Note: All e-mail sent to or from this address will be received or otherwise
recorded by the e-mail recipients of this forum. It is subject to archival,
monitoring or review by, and/or disclosure to someone other than the recipient.
Our privacy policy is posted on www.printplanet.com
--