Comment rendre '.Contains(string)' insensible a la casse

Comment rendre ‘.Contains(string)’ insensible a la casse


Source : Stack Overflow

Pour tester si la chaine paragraph contient la chaine word (merci a @QuarterMeister)

culture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0

Ou culture est l’instance de CultureInfo decrivant la langue dans laquelle le texte est ecrit.

Cette solution est transparente quant a la definition de l’insensibilite a la casse, qui depend de la langue. Par exemple, la langue anglaise utilise les caracteres I et i pour les versions majuscule et minuscule de la neuvieme lettre, tandis que la langue turque utilise ces caracteres pour les onzieme et douzieme lettres de son alphabet de 29 lettres. La version majuscule turque de ‘i’ est le caractere peu familier ‘I’.

Ainsi, les chaines tin et TIN sont le meme mot en anglais, mais des mots differents en turc. Si j’ai bien compris, l’un signifie ‘esprit’ et l’autre est un mot onomatopeique. (Turcs, veuillez me corriger si je me trompe, ou suggerer un meilleur exemple)

En resume, vous ne pouvez repondre a la question ‘ces deux chaines sont-elles identiques mais dans des casses differentes’ que si vous savez dans quelle langue le texte est ecrit. Si vous ne le savez pas, vous devrez deviner. Etant donne l’hegemonie de l’anglais dans le logiciel, vous devriez probablement recourir a CultureInfo.InvariantCulture, car cela se trompera de maniere familiere.