Tel que discuté dans les commentaires de @miguel de réponse, vous pouvez utiliser TextInfo.ToTitleCase
qui est disponible depuis .NET 1.1. Voici un code correspondant à votre exemple:
string lipsum1 = "Lorem lipsum et";
// Creates a TextInfo based on the "en-US" culture.
TextInfo textInfo = new CultureInfo("en-US",false).TextInfo;
// Changes a string to titlecase.
Console.WriteLine("\"{0}\" to titlecase: {1}",
lipsum1,
textInfo.ToTitleCase( lipsum1 ));
// Will output: "Lorem lipsum et" to titlecase: Lorem Lipsum Et
Il ignorera l'enveloppe des choses qui sont tout en majuscules comme "LOREM LIPSUM ET" parce que c'est en prenant soin de les cas, si les acronymes sont dans le texte (alors que les "NAMBLA" ne devient pas "nambla" ou "Nambla").
Toutefois, si vous souhaitez uniquement mettre en majuscule le premier caractère que vous pouvez faire à la solution qui est plus ici... ou vous pouvez fractionner la chaîne et de mettre en majuscule le premier de la liste:
string lipsum2 = "Lorem Lipsum Et";
string lipsum2lower = textInfo.ToLower(lipsum1);
string[] lipsum2split = lipsum2lower.Split(' ');
bool first = true;
foreach (string s in lipsum2split)
{
if (first)
{
Console.Write("{0} ", textInfo.ToTitleCase(s));
first = false;
}
else
{
Console.Write("{0} ", s);
}
}
// Will output: Lorem lipsum et