J’ai une chaîne qui contient un mélange de majuscules et minuscules, par exemple « une chaîne Simple ». Ce que je veux faire est de convertir le premier caractère de chaque mot (je peux supposer que les mots sont séparés par des espaces) en majuscules. Donc, je veux le résultat comme « Une Simple chaîne ». Y a-t-il un moyen facile de faire cela ? Je ne veux pas diviser la chaîne et de faire la conversion (qui sera mon dernier recours). En outre, il est garanti que les chaînes sont en anglais.
Réponses
Trop de publicités?Personnellement, j'ai essayé de l' TextInfo.ToTitleCase
méthode, mais, je ne comprends pas pourquoi il ne marche pas lorsque tous les caractères sont supérieur-est enfermé.
Bien que j'aime l'util fonction fournie par Winston Smith, permettez-moi de fournir la fonction que j'utilise actuellement:
public static String TitleCaseString(String s)
{
if (s == null) return s;
String[] words = s.Split(' ');
for (int i = 0; i < words.Length; i++)
{
if (words[i].Length == 0) continue;
Char firstChar = Char.ToUpper(words[i][0]);
String rest = "";
if (words[i].Length > 1)
{
rest = words[i].Substring(1).ToLower();
}
words[i] = firstChar + rest;
}
return String.Join(" ", words);
}
Jouer avec certains tests de chaînes:
String ts1 = "Converting string to title case in C#";
String ts2 = "C";
String ts3 = "";
String ts4 = " ";
String ts5 = null;
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts1)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts2)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts3)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts4)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts5)));
Donner de sortie:
|Converting String To Title Case In C#|
|C|
||
| |
||
http://support.microsoft.com/kb/312890 - comment convertir des chaînes pour abaisser, supérieure, ou casse de titre (proper) à l’aide de Visual c#