324 votes

Conversion string en casse de titre en c#

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.

590voto

Kobi Points 65357

147voto

Winston Smith Points 12029

Essayez ceci :

Comme cela a déjà été souligné, à l’aide de TextInfo.ToTitleCase ne peut pas vous donner les résultats exacts que vous souhaitez. Si vous avez besoin de plus de contrôle sur la sortie, vous pourriez faire quelque chose comme ceci :

Et ensuite l’utiliser comme suit :

77voto

Todd Menier Points 3599

Encore une autre variante. Basé sur plusieurs trucs ici j’ai il réduit à cette méthode d’extension, qui fonctionne très bien pour mes besoins :

27voto

Luis Quijada Points 1439

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|
||
|   |
||

9voto

ttarchala Points 435

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#

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X