7
votes

Conversion de chaîne, première partie du caractère de chaque mot

Je veux convertir: xxx

à xxx

in c #.

Toutes les façons de faire élégantes Ceci?


0 commentaires

5 Réponses :


31
votes
string name = "HECHT, WILLIAM";
string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower());
(note it only works lower-to-upper, hence starting lower-case)

3 commentaires

Est-ce cette chose là-bas? Oh mon. +1


@MARC: Est-ce que TotitTlecase () poignée "Peter O'Toole" et "Mary Jones-Smith" correctement?


Ongledge: Peter a besoin d'un nouveau nom, Marie va bien cependant.



0
votes
    public static string CamelCase(this string s)
    {
        if (String.IsNullOrEmpty(s))
            s = "";
        string phrase = "";
        string[] words = s.Split(' ');
        foreach (string word in words)
        {
            if (word.Length > 1)
                phrase += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower() + " ";
            else
                phrase += word.ToUpper() + " ";

        }
        return phrase.Trim();
    }

2 commentaires

@Truthstands: Ne produit pas les résultats corrects pour "Peter O'Toole" et "Mary Smith-Jones".


Vrai, mais il ne serait pas difficile de résoudre ce problème.



0
votes

J'ai voté de la réponse de Marc, mais cela fonctionnera également:

string s = Microsoft.VisualBasic.Strings.StrConv("HECHT, WILLIAM", VbStrConv.ProperCase,0);


0 commentaires

5
votes

J'aimerais simplement inclure une réponse qui souligne que, bien que cela semble simple en théorie, en pratique capitalisant correctement les noms de chacun peut être très compliqué:


0 commentaires

-2
votes

J'ai eu des problèmes avec le code ci-dessus, alors je l'ai modifié un peu et cela a fonctionné. Salutations du Chili. Bon papier.

private void label8_Click(object sender, EventArgs e)
{
nombre1.Text= NOMPROPIO(nombre1.Text);
}

string NOMPROPIO(string s)
{
  if (String.IsNullOrEmpty(s))
     s = "";
  string phrase = "";
  string[] words = s.Split(' ');
  foreach (string word in words)
  {
    if (word.Length > 1)
    phrase += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower() + " ";
    else
    phrase += word.ToUpper() + " ";
  }
return phrase.Trim();
}