J'ai une chaîne qui contient des mots dans un mélange de caractères majuscules et minuscules.
Par exemple: string myData = "a Simple string";
J'ai besoin de convertir le premier caractère de chaque mot (séparé par des espaces) en majuscules. Je veux donc le résultat comme:string myData ="A Simple String";
Existe-t-il un moyen simple de procéder? Je ne veux pas diviser la chaîne et faire la conversion (ce sera mon dernier recours). De plus, il est garanti que les chaînes sont en anglais.
Réponses:
MSDN: TextInfo.ToTitleCase
Assurez-vous d'inclure:
using System.Globalization
la source
Actual result: "War And Peace"
.text = Regex.Replace(text, @"(?<!\S)\p{Ll}", m => m.Value.ToUpper());
, mais c'est loin d'être parfait. Par exemple, il ne gère toujours pas les guillemets ou les parenthèses -"(one two three)"
->"(one Two Three)"
. Vous voudrez peut-être poser une nouvelle question après avoir compris exactement ce que vous voulez faire avec ces cas.Essaye ça:
Comme cela a déjà été souligné, l'utilisation de TextInfo.ToTitleCase peut ne pas vous donner les résultats exacts souhaités. Si vous avez besoin de plus de contrôle sur la sortie, vous pouvez faire quelque chose comme ceci:
Et puis utilisez-le comme ceci:
la source
Encore une autre variation. Sur la base de plusieurs conseils ici, je l'ai réduit à cette méthode d'extension, qui fonctionne très bien à mes fins:
la source
Personnellement, j'ai essayé la
TextInfo.ToTitleCase
méthode, mais je ne comprends pas pourquoi cela ne fonctionne pas lorsque tous les caractères sont en majuscules.Bien que j'aime la fonction util fournie par Winston Smith , permettez-moi de fournir la fonction que j'utilise actuellement:
Jouer avec certaines chaînes de tests :
Donner une sortie :
la source
ToLower()
la chaîne entière, vous préférez faire tout cela vous-même et appeler la même fonction sur chaque caractère individuel? Non seulement c'est une solution laide, elle n'apporte aucun avantage et prendrait même plus de temps que la fonction intégrée.rest = words[i].Substring(1).ToLower();
Récemment, j'ai trouvé une meilleure solution.
Si votre texte contient toutes les lettres en majuscules, TextInfo ne les convertira pas dans la casse appropriée. Nous pouvons résoudre ce problème en utilisant la fonction minuscule à l'intérieur comme ceci:
Maintenant, cela convertira tout ce qui entre dans Propercase.
la source
la source
Si quelqu'un est intéressé par la solution pour Compact Framework:
la source
Voici la solution à ce problème ...
la source
Utilisez d'
ToLower()
abord, puisCultureInfo.CurrentCulture.TextInfo.ToTitleCase
sur le résultat pour obtenir la sortie correcte.la source
J'avais besoin d'un moyen de gérer tous les mots en majuscules et j'aimais la solution de Ricky AH, mais je suis allé plus loin pour l'implémenter comme méthode d'extension. Cela évite de devoir créer votre tableau de caractères, puis d'appeler ToArray explicitement à chaque fois - vous pouvez donc simplement l'appeler sur la chaîne, comme ceci:
usage:
code:
la source
Il vaut mieux le comprendre en essayant votre propre code ...
Lire la suite
http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html
1) Convertir une chaîne en majuscules
2) Convertir une chaîne en minuscules
3) Convertir une chaîne en TitleCase
la source
Voici une implémentation, caractère par caractère. Devrait fonctionner avec "(One Two Three)"
la source
la source
Vous pouvez directement changer le texte ou la chaîne en utilisant cette méthode simple, après avoir vérifié les valeurs de chaîne nulles ou vides afin d'éliminer les erreurs:
la source
Essaye ça:
Appelez cette méthode dans l'événement TextChanged de TextBox.
la source
J'ai utilisé les références ci-dessus et la solution complète est: -
// Besoin d'un résultat comme "Infoa2z signifie toutes les informations"
// Nous devons également convertir la chaîne en minuscules, sinon elle ne fonctionne pas correctement.
http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#
la source
C'est ce que j'utilise et cela fonctionne dans la plupart des cas, sauf si l'utilisateur décide de le remplacer en appuyant sur Maj ou sur le verrouillage des majuscules. Comme sur les claviers Android et iOS.
la source
Pour ceux qui cherchent à le faire automatiquement en appuyant sur une touche, je l'ai fait avec le code suivant sur vb.net sur une zone de texte personnalisée - vous pouvez évidemment le faire également avec une zone de texte normale - mais j'aime la possibilité d'ajouter du code récurrent pour des contrôles spécifiques via des commandes personnalisées, il convient au concept de POO.
la source
Fonctionne bien même avec un étui à chameau: 'someText in YourPage'
la source
Comme méthode d'extension:
Usage:
Résultat:
Kebab Is Deliciou's ;d C...
la source
Alternative en référence à
Microsoft.VisualBasic
(gère également les chaînes majuscules):la source
Sans utiliser
TextInfo
:Il parcourt chaque lettre de chaque mot, le convertissant en majuscule s'il s'agit de la première lettre, sinon le convertissant en minuscule.
la source
Je sais que c'est une vieille question mais je cherchais la même chose pour C et je l'ai compris alors j'ai pensé que je le posterais si quelqu'un d'autre cherche un moyen en C:
la source