Vous pouvez utiliser la méthode d'extension .Contains()
de l'espace de nom System.Linq
:
using System.Linq;
...
if (abc.ToLower().Contains('s')) { }
Et aussi, pour vérifier si une expression booléenne est vraie, vous n'avez pas besoin de == true
Depuis le Contains
est une méthode d'extension, ma solution peut prêter à confusion. Voici deux versions qui ne nécessitent pas l'ajout de using System.Linq;
:
if (abc.ToLower().IndexOf('s') != -1) { }
// or:
if (abc.IndexOf("s", StringComparison.CurrentCultureIgnoreCase) != -1) { }
Mise à jour
Si vous le souhaitez, vous pouvez écrire votre propre méthode d'extension pour une réutilisation plus facile :
public static class MyStringExtensions
{
public static bool ContainsAnyCaseInvariant(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.InvariantCultureIgnoreCase) != -1;
}
public static bool ContainsAnyCase(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.CurrentCultureIgnoreCase) != -1;
}
}
Vous pouvez alors les appeler comme ceci :
if (def.ContainsAnyCaseInvariant('s')) { }
// or
if (def.ContainsAnyCase('s')) { }
Dans la plupart des cas, lorsque vous traitez des données utilisateur, vous souhaitez en fait utiliser CurrentCultureIgnoreCase
(ou le ContainsAnyCase
méthode d'extension) car de cette façon, vous laissez le système gérer les problèmes de majuscules et de minuscules, qui dépendent de la langue. Lorsque l'on traite des questions de calcul, comme les noms des balises HTML, etc., il est préférable d'utiliser la culture invariante.
Par exemple : En turc, la lettre majuscule I
en minuscules est ı
(sans point) et non i
(avec un point) .