I'm looking for a function to convert a string of text that is in UpperCase to SentenceCase. All the examples I can find turn the text into TitleCase.
Sentence case in a general sense describes the way that capitalization is used within a sentence. Sentence case also describes the standard capitalization of an English sentence, i.e. the first letter of the sentence is capitalized, with the rest being lower case (unless requiring capitalization for a specific reason, e.g. proper nouns, acronyms, etc.).
Can anyone point me in the direction of a script or function for SentenceCase?
There isn't anything built in to .NET - however, this is one of those cases where regular expression processing actually may work well. I would start by first converting the entire string to lower case, and then, as a first approximation, you could use regex to find all sequences like [a-z]\.\s+(.)
, and use ToUpper()
to convert the captured group to upper case. The RegEx
class has an overloaded Replace()
method which accepts a MatchEvaluator
delegate, which allows you to define how to replace the matched value.
Here's a code example of this at work:
var sourcestring = "THIS IS A GROUP. OF CAPITALIZED. LETTERS."; // start by converting entire string to lower case var lowerCase = sourcestring.ToLower(); // matches the first sentence of a string, as well as subsequent sentences var r = new Regex(@"(^[a-z])|\.\s+(.)", RegexOptions.ExplicitCapture); // MatchEvaluator delegate defines replacement of setence starts to uppercase var result = r.Replace(lowerCase, s => s.Value.ToUpper()); // result is: "This is a group. Of uncapitalized. Letters."
This could be refined in a number of different ways to better match a broader variety of sentence patterns (not just those ending in a letter+period).
This works for me.
/// <summary> /// Converts a string to sentence case. /// </summary> /// <param name="input">The string to convert.</param> /// <returns>A string</returns> public static string SentenceCase(string input) { if (input.Length < 1) return input; string sentence = input.ToLower(); return sentence[0].ToString().ToUpper() + sentence.Substring(1); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With