12
votes

Vérification de plusieurs contient sur une chaîne

J'ai donc un conditionnel qui ressemble actuellement à ceci ... XXX PRE>

J'ai besoin d'ajouter quelques caractères de plus que je veux vérifier et je me demandais s'il y a une syntaxe plus condensée Pour accomplir la même chose? Quelque chose de similaire à celui de SQL dans l'opérateur? P>

if ( input IN (",", "/", @"\", ....etc )  )


3 commentaires

semblable à cette question Stackoverflow.com/Questtions/194930/...


J'ai vu cette question, j'espérais pouvoir trouver une solution plus facile depuis que je connais tous les personnages que je cherche à l'avance (ce que j'ai merci pour toutes les réponses!).


Dupliqué possible de vb.net - Ajout de plus de 1 chaîne à. contient


8 Réponses :


29
votes

Pensez à utiliser Regex (spécifier des caractères que vous souhaitez enregistrer entre crochets - rappelez-vous que certains d'entre eux doivent être échappés):

new[] {",", "/"}.Any(input.Contains)


0 commentaires

10
votes

à quoi ça se passe? XXX


4 commentaires

Une seule chose: Indexofany ne gère que des caractères simples, il ne gite pas de chaînes.


Dans l'OP, seuls les seuls caractères sont vérifiés.


Bien sûr, c'était juste une note latérale, car l'index a en fait une version surchargée avec une chaîne.


@empi Nope MSDN.MicRosoft. COM / EN-US / Bibliothèque / ...



4
votes

ESSAYEZ

If (input.IndexOfAny(@",/\.".ToCharArray()) >= 0) {
    ...
}


0 commentaires

4
votes

Vous pouvez utiliser certains LINQ:

if ( ",/\\.".ToCharArray().Any( c => input.Contains( c ) ) )


0 commentaires

4
votes

Vous pouvez utiliser string.indexofany - il numérisera la chaîne de l'un quelconque de l'un d'un jeu de caractères dans un tableau:

if (e.Label.IndexOfAny(new char[]{',', '/', @'\', '.' /* other chars here */}) > -1)


0 commentaires

7
votes

Est-ce que cette victoire est la plus courte?

@".,/\".Any(input.Contains)


0 commentaires

4
votes
"asdfasdf".ContainsAny(".","/","4");

public static bool ContainsAny(this string stringToCheck, params string[] parameters)
{
    return parameters.Any(parameter => stringToCheck.Contains(parameter));
}

1 commentaires

Ne fonctionne pas dans c #. La chaîne de type ne contient pas de définition pour "contient"



1
votes

Une méthode d'extension pourrait rendre les choses propres. Regardez ce qui suit.

string myString = "this is my string";
//extension
if (myString.ContainsChar('.', '*', '%')) //do something

//static method
if (ContainsChar(myString, '.', '*', '%')) //do something


0 commentaires