2017-04-10 2 views
0

J'ai une fonction qui renvoie un nombre d'occurrences de caractères au niveau du texte. Mais il y a un problème: l'affaire des lettres est importante. Fonction:Rechercher des occurrences de caractères en ignorant la casse C#

public static int GetOccurrences(String text, Char character) 
    { 
     return text.Count(x => x == character); 
    } 

Pour "Lorem ipsum dolor sit amet, pro eu erant sempre ancillae" il sera 1 "L" et 3 "l", par exemple. Est-il possible d'ignorer le cas de la lettre?

+0

juste faire une copie minuscule de la chaîne, faites votre comparaison, et le retour int. –

+3

Copie possible de [Quelle est la bonne façon de comparer le cas ignorant char?] (Http://stackoverflow.com/questions/1394877/what-is-the-correct-way-to-compare-char-ignoring-case) –

Répondre

3

Vous pouvez simplement les mettre tout en majuscules lorsque vous les comparez

text.Count(x => char.ToUpperInvariant(x) == char.ToUpperInvariant(character)) 
+1

Vérifiez la réponse de Jon à ce poste en ce qui concerne la sensibilité à la casse lors des comparaisons: http://stackoverflow.com/questions/234591/upper-vs-lower-case –

+0

@RufusL C'est très intéressant, je ne savais pas à ce sujet. Est-ce que la spécification de 'CultureInfo' serait meilleure? – CNuts

+0

Il a répondu à un double de cette question ici, qui le décrit mieux que je pourrais: http://stackoverflow.com/questions/1394877/what-is-the-correct-way-to-compare-char-ignoring-case –