Je veux savoir comment se référer à un mot d'une phrase dans une étiquette. Par exemple, j'ai: Je veux dire: "si label1.text contient le mot" stylo "puis faire quelque chose" em>: p> < Pré> xxx pré> Comment puis-je faire cela? p> p>
6 Réponses :
Vous pouvez utiliser string.split () pour séparer ce texte en jetons et Array.Contains pour vérifier si le mot est dans la liste.
string sentence = "books pencil pen ruler"; string[] words = sentence.Split(' '); bool hasFox = words.Contains("pen");
Et ça "j'ai un stylo. Sa couleur est noire."
Comme mentionné dans la réponse ... Si vous voulez plus de délimiteurs de mots à part '', ajoutez-les à Split E.G. Split ('', '\ t', '.', ',') ... J'ai suscité @tim S. Parce que sa réponse traite de cette question plus compacte.
Si le mot de stylo est attendu entre les mots et non dans le début ou la fin de la chaîne.
if (Regex.IsMatch(label1.Text, @"\bpen\b")) { //do something }
Qui correspond également à ouvert code> :-)
Omet de faire correspondre "stylo bla bla bla"
Yup ça va bien :) Dans ce cas, il n'y aura pas de "bla bla bla stylo", donc tout va bien. Merci :)
Si le texte d'entrée est "BLA BLA BLA PEN", comment l'index de ("stylo") trouve-t-il le "stylo"? Il retournera -1.
Dans mon cas, il n'y aura pas les mêmes mots dans la chaîne. Tous les mots seront différents. Donc ça va
Je ne pense pas que l'OP ait littéralement toujours voulu correspondre à cette chaîne d'entrée (sinon, il pourrait certainement avoir du mal à coder la réponse). Votre réponse échoue si le texte recherché est le dernier mot d'une phrase.
Et maintenant, avec la dernière modification, vous correspondez à nouveau à une fois de manière incorrecte Ouvrir code> avec
|| Label1.text.indexof ("stylo") code>
Oui, j'ai besoin de quelque chose d'autre pour le rendre générique
Quelque chose comme fractionnement sur les limites de mot, que ma réponse et @tim S. font correctement.
ESSAYER -
if(label1.text.contains(" pen ")) { //do something }
Ajoutez simplement de l'espace avant et après
Maintenant, essayez de faire correspondre «Bla Bla Bla Stylo». Cela ne contient pas de "stylo".
Utilisez les frontières du mot Regex:
if (Regex.IsMatch(label1.text, @"\bpen\b")) // do something
Eh bien, je suis d'accord avec le fait que l'index de réponses sont fausses :-) Mais ce n'est pas nécessairement plus robuste que de fractionnement sur des jetons de limites de mots (bien que c'est certainement une solution plus courte, donc +1 pour cela :-).
string s1 = "books pencil pen ruler"; string s2 = "pen"; if(s1.Contains(s2) && s2 != "") { // do something }
Ah, je vois ce que vous essayez de dire. Eh bien, j'essayais simplement d'éviter d'utiliser un tableau de cordes. Je suppose que c'est juste à la hauteur de l'OP de choisir en fonction de l'exigence.
Cela devrait aider
Avez-vous lu l'une des autres réponses et commentaires sur les autres réponses? Votre réponse duplique plusieurs réponses existantes et ne va pas pour des raisons similaires.
+1 simplement parce qu'il semble y avoir de nombreuses idées fausses sur la façon de résoudre ce problème ...