2010-05-16 8 views
4

Qu'est-ce que je fais de mal ici? Je veux que le nom des utilisateurs soit affiché dans la sortie comme propercase mais je ne peux pas le comprendre.Proper Case Title Case Question

string proper = this.xTripNameTextBox.Text; 
CultureInfo properCase = System.Threading.Thread.CurrentThread.CurrentCulture; 
TextInfo currentInfo = properCase.TextInfo; 
proper = currentInfo.ToTitleCase(proper); 

this.xTripOutputLabel.Text = proper + Environment.NewLine + "The total gallons you would use: " + Output.ToString("0") + Environment.NewLine + "Total amount it will cost you: " + Coutput.ToString("C") + Environment.NewLine +" Your customer number is " + rnd1.Next(1, 1000).ToString(); 
+0

Pouvez-vous nous montrer ce que vous obtenez et ce que vous attendez? –

+0

Quand un utilisateur entre "JOHN DOE" je reçois "JOHN DOE" il est censé le convertir en propercase "John Doe", mais je ne sais pas ce que je fais mal –

+0

C'est le problème, utilisez ToLower pour convertir d'abord la chaîne en minuscules, le cartouche de titre fonctionnera. –

Répondre

8

J'ai testé ce qui suit sur un tout mot de majuscules à cela fonctionne:

string proper = "TEST STRING"; 
CultureInfo properCase = System.Threading.Thread.CurrentThread.CurrentCulture; 
TextInfo currentInfo = properCase.TextInfo; 
proper = currentInfo.ToTitleCase(currentInfo.ToLower(proper)); 
// proper = "Test String" 

Alors - changer la chaîne en minuscules avant d'appeler ToTitleCase.

La documentation MSDN indique qu'une chaîne entièrement en majuscules (comme un acronyme) ne sera pas convertie et que l'exemple de code fourni dans la publication corrobore cette hypothèse.

+0

Excellent merci les gars ça a marché !!! –

+0

S'il vous plaît jeter un coup d'oeil @ http://stackoverflow.com/questions/4426439/function-to-normalize-string-case-according-to-specified-or-current-cultureinfo – Shimmy

3

Qui est selon les spécifications, citation du doc: Cependant, cette méthode ne fournit pas de boîtier approprié pour convertir un mot qui est entièrement en majuscules

http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx

Sans test, je suppose que vous pourriez le faire en le faisant d'abord LowerCase puis TitleCase.

+0

merci d'essayer minuscules puis titleCase –

+0

+1 pour sauvegarder la solution avec la documentation. – Heinzi