Comment supprimer des minuscules sur une zone de texte?

J’essaie de supprimer les lettres minuscules sur une zone de TextBox ..

Par exemple, code alpha court représentant l’assurance (par exemple, “CBCB” pour “Blue Cross Blue Shield”):

 txtDesc.text = "Blue Cross Blue Shield"; ssortingng Code = //This must be BCBS.. 

C’est possible? Aidez-moi, s’il vous plaît. Merci!

Vous pouvez utiliser une expression régulière pour supprimer tout ce qui n’était pas en majuscule (AZ):

 using System; using System.Text.RegularExpressions; class Program { static void Main( ssortingng[] args ) { ssortingng input = "Blue Cross Blue Shield 12356"; Regex regex = new Regex("[^AZ]"); ssortingng output = regex.Replace(input, ""); Console.WriteLine(output); } } 

Notez que cela supprimerait également les caractères non-ASCII. Une expression rationnelle alternative serait:

 Regex regex = new Regex(@"[^\p{Lu}]"); 

… Je pense que cela devrait couvrir les lettres majuscules de toutes les cultures.

 ssortingng Code = new Ssortingng(txtDesc.text.Where(c => IsUpper(c)).ToArray()); 

Voici ma variante:

 var input = "Blue Cross Blue Shield 12356"; var sb = new SsortingngBuilder(); foreach (var ch in input) { if (char.IsUpper(ch)) { // only keep uppercase sb.Append(ch); } } sb.ToSsortingng(); // "BCBS" 

Normalement, j’aime bien utiliser des expressions régulières, mais je ne sais pas comment sélectionner “uniquement des majuscules” sans [AZ] qui se déchirerait mal sur les caractères extérieurs à l’alphabet anglais (même les autres caractères latins!: – /)

Bonne codage.


Mais voyez la réponse de M. Skeet pour la méthode regex 😉

 ssortingng Code = Regex.Replace(txtDesc.text, "[az]", ""); 

Je mapperais la valeur de votre abréviation dans un dictionnaire comme:

 Dictionary valueMap = new Dictionary(); valueMap.Add("Blue Cross Blue Shield", "BCBS"); ssortingng Code = ""; if(valueMap.ContainsKey(txtDesc.Text)) Code = valueMap[txtDesc.Text]; else // Handle 

Mais si vous voulez toujours que la fonctionnalité que vous mentionnez utilise linq:

 ssortingng newSsortingng = new ssortingng(txtDesc.Text.Where(c => char.IsUpper(c).ToArray()); 

Vous pouvez essayer d’utiliser l’implémentation ” Remplacer les caractères minuscules par une écanvas “, mais remplacez “*” par “” (vide).

Donc, le code ressemblerait à quelque chose comme ça:

 txtDesc.Text = "Blue Cross Blue Shield"; ssortingng TargetSsortingng = txt.Desc.Text; ssortingng MainSsortingng = TargetSsortingng; for (int i = 0; i < TargetString.Length; i++) { if (char.IsLower(TargetString[i])) { TargetString = TargetString.Replace( TargetString[ i ].ToString(), string.Empty ); } } Console.WriteLine("The string {0} has converted to {1}", MainString, TargetString); 

Sans regex:

 ssortingng input = "Blue Cross Blue Shield"; ssortingng output = new ssortingng(input.Where(Char.IsUpper).ToArray()); Response.Write(output); 
 ssortingng caps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ssortingng.Join("", "Blue Cross Blue Shield".Select(c => caps.IndexOf(c) > -1 ? c.ToSsortingng() : "") .ToArray()); 

Plutôt que de faire correspondre toutes les capitales, je pense que la spécification exigerait de faire correspondre le premier caractère de tous les mots. Cela permettrait une entrée inconsistante tout en restant fiable à long terme. Pour cette raison, je suggère d’utiliser le code suivant. Il utilise un agrégat sur chaque Match de l’object Regex et ajoute la valeur à un object chaîne appelé output .

 ssortingng input = "Blue Cross BLUE shield 12356"; Regex regex = new Regex("\\b\\w"); ssortingng output = regex.Matches(input).Cast().Aggregate("", (current, match) => current + match.Value); Console.WriteLine(output.ToUpper()); // outputs BCBS1 
 ssortingng Code = Regex.Replace(txtDesc.text, "[az]", ""); 

Ce n’est pas parfait, mais devrait fonctionner (et passe votre test BCBS):

 private static ssortingng AlphaCode(Ssortingng Input) { List capLetter = new List(); foreach (Char c in Input) { if (char.IsLetter(c)) { Ssortingng letter = c.ToSsortingng(); if (letter == letter.ToUpper()) { capLetter.Add(letter); } } } return Ssortingng.Join(Ssortingng.Empty, capLetter.ToArray()); } 

Et cette version gérera d’étranges scénarios de saisie (ceci permet de s’assurer que la première lettre de chaque mot est en majuscule).

 private static ssortingng AlphaCode(Ssortingng Input) { Ssortingng capCase = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Input.ToSsortingng().ToLower()); List capLetter = new List(); foreach (Char c in capCase) { if (char.IsLetter(c)) { Ssortingng letter = c.ToSsortingng(); if (letter == letter.ToUpper()) { capLetter.Add(letter); } } } return Ssortingng.Join(Ssortingng.Empty, capLetter.ToArray()); }