Je veux utiliser C # pour vérifier si une valeur de chaîne contient un mot dans un tableau de chaînes. Par exemple,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
Comment puis-je vérifier si la valeur de chaîne pour 'stringToCheck' contient un mot dans le tableau?
Réponses:
voici comment vous pouvez le faire:
MISE À JOUR: Peut-être que vous cherchez une meilleure solution .. reportez-vous à la réponse de @Anton Gogolev ci-dessous qui utilise LINQ.
la source
Voici comment:
Ceci vérifie si
stringToCheck
contient une des sous-chaînes destringArray
. Si vous voulez vous assurer qu'il contient toutes les sous-chaînes, passezAny
àAll
:la source
stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)
Essaye ça:
Pas besoin d'utiliser LINQ
la source
stringArray.Any(w => stringToCheck.IndexOf(w) >= 0)
mais la réponse Linq utilisant String.Contains a plus de sens, car c'est exactement ce qui est demandé.Utilisez simplement la méthode linq:
la source
using System.Linq;
Manière la plus facile et d'échantillon.
la source
la source
Quelque chose comme ça peut-être:
la source
String.Contains
peut-être mieux queString.IndexOf
si vous ne voulez pas ignorer la casse, car Microsoft a oublié deux arguments,String.Contains
vous devez écrire le vôtre. Considérez:Array.Exists(stringArray, s => stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1)
L'utilisation de Linq et du groupe de méthodes serait le moyen le plus rapide et le plus compact de le faire.
la source
Vous pouvez définir vos propres méthodes
string.ContainsAny()
etstring.ContainsAll()
. En prime, j'ai même introduit unestring.Contains()
méthode qui permet une comparaison insensible à la casse, etc.Vous pouvez les tester avec le code suivant:
la source
J'utilise ce qui suit dans une application console pour vérifier les arguments
la source
J'utiliserais Linq mais cela peut toujours être fait par:
la source
Essayer:
la source
Vous pouvez également faire la même chose que Anton Gogolev suggère de vérifier si un article dans
stringArray1
correspond tout élément dansstringArray2
:De même, tous les éléments de stringArray1 correspondent à tous les éléments de stringArray2:
la source
la source
essayez ceci, voici l'exemple: Pour vérifier si le champ contient l'un des mots du tableau. Pour vérifier si le champ (someField) contient l'un des mots du tableau.
la source
la source
J'ai utilisé une méthode similaire à l'IndexOf de Maitrey684 et à la boucle foreach de Theomax pour créer cela. (Remarque: les 3 premières lignes de "chaîne" ne sont qu'un exemple de la façon dont vous pouvez créer un tableau et le mettre au format approprié).
Si vous souhaitez comparer 2 tableaux, ils seront délimités par des points-virgules, mais la dernière valeur n'en aura pas après. Si vous ajoutez un point-virgule à la forme chaîne du tableau (c.-à-d. A; b; c devient a; b; c;), vous pouvez faire correspondre en utilisant "x;" quelle que soit sa position:
la source
bFound prend la valeur true si la chaîne recherchée correspond à n'importe quel élément des «lignes» du tableau.
la source
Essaye ça
Il vous renverra la ligne avec la première incidence du texte que vous recherchez.
la source
S'il
stringArray
contient un grand nombre de chaînes de longueur variable, envisagez d'utiliser un Trie pour stocker et rechercher le tableau de chaînes.Voici l'implémentation de la
Trie
classeSi toutes les chaînes
stringArray
ont la même longueur, vous feriez mieux d'utiliser simplement unHashSet
au lieu d'unTrie
la source
Solution simple, pas besoin de linq any
String.Join (",", tableau) .Contains (Value + ",");
la source
la source
Essayez ceci, pas besoin de boucle ..
la source
Pour compléter les réponses ci-dessus, pour la vérification IgnoreCase , utilisez:
la source
Pour mon cas, les réponses ci-dessus n'ont pas fonctionné. Je cherchais une chaîne dans un tableau et je l'assignais à une valeur booléenne. J'ai modifié la réponse de @Anton Gogolev et supprimé la
Any()
méthode et mis l'stringToCheck
intérieur de laContains()
méthode.la source
Utilisation des méthodes Find ou FindIndex de la classe Array :
la source
J'ai utilisé le code suivant pour vérifier si la chaîne contenait l'un des éléments du tableau de chaînes:
la source
Text = "matched"
autant de fois qu'ilstringToCheck
contient de sous-chaînes destringArray
. Vous pouvez mettre unbreak
oureturn
après le devoir.Trois options ont été démontrées. Je préfère trouver le troisième comme le plus concis.
la source