2013-02-14 4 views
0

J'ai déménagé dans Selenium WebDriver, et toujours trouver les exemples les plus confus.Java si autre correspondance partielle

Je dois être capable de lire une chaîne de caractères (réussi) exécuter une condition qui demande Si un texte spécifique est présent.

Par souci de ce texte. Je dois faire correspondre sur Jeff, voir le code ci-dessous, aussi longtemps que Jeff existe dans la chaîne, je veux retourner vrai. Si Jeff n'existe pas, alors je vais vérifier oh, disons 50-75 autres noms. Cependant, la chaîne peut contenir leur nom et un texte supplémentaire qui ne peut pas être contrôlé. donc je dois faire un match partiel. Question 1. suis-je foutu et devra construire chaque expression regex dans ce format fou que j'ai vu, ou est-ce que je manque quelque chose d'évident?

Question 2. Est-ce que quelqu'un pour ma santé mentale, s'il vous plaît, montrez-moi la bonne façon de faire correspondre Jeff, avec la possibilité de texte avant et après le nom de Jeff.

Merci!

String oneoff = driver.findElement(By.id("id_one_off_byline")) 
     .getAttribute("value"); 
System.out.println("One Off is:" + oneoff); 
if (oneoff.matches("Jeff")) { 
    System.out.println("It is Jeff"); 
} else { 
    System.out.println("it is not jeff"); 
} 

Ceci est juste la partie fonctionnelle du code,

Répondre

4

comme Jeff existe dans la chaîne, je veux retourner vrai

alors vous devriez probablement tester avec

if (oneoff.contains("Jeff")) 

depuis matches utilisation regex comme paramètre, si if (oneoff.matches("Jeff")) retournerait vrai seulement si oneoff = "Jeff".

+0

La façon d'utiliser 'matches()' dans un contexte contient serait 'if (oneoff.matches (" (. *) Jeff (. *) "));' Je crois? Bien qu'il ne devrait y avoir aucune raison de le faire. – Nashibukasan

+0

Testé et travaillé ... Merci, je pense que ce qui est arrivé est que j'avais essayé contient plus tôt, mais avait une autre syntaxe incorrecte, donc je pensais qu'il avait échoué sur moi. et s'est déplacé sur des allumettes. Je sais que c'était une réponse simple, mais pour certains d'entre nous, cela peut être la pierre d'achoppement! Alors, vraiment, appréciez-le. –

+1

@Nashibukasan oui, pour faire 'match'" trouver "une certaine chaîne à l'intérieur de l'autre chaîne, il devrait être entouré de'. * ', Mais ce serait trop dans cette situation IMHO – Pshemo

1

Vous n'avez pas besoin d'utiliser match() pour le code que vous avez fourni. Au lieu de cela, utilisez oneoff.equals ("String") pour la correspondance de chaîne. Match() est plus pour une expression regex. Vous pouvez également utiliser oneoff.contains ("String") si vous voulez renvoyer true même si la chaîne existe uniquement en tant que sous-ensemble de la chaîne cible.

1
if (oneoff.contains("Jeff")) { 
    System.out.println("It is Jeff"); 
} else if (!oneoff.contains("Jeff")) { 
    System.out.println("it is not jeff"); 
} 

Je pense que vous devriez améliorer votre code pour être comme ça, parce que Java n'a probablement pas reconnu chaîne d'autre si contenu avec d'autres « jeff » peut-être « Jeef » ou « Jeef » ou peut-être même « Jeef »

J'espère que cela fonctionne, j'avais l'habitude de trouver le même bug comme le vôtre et j'essaye de le surmonter.

+0

Merci pour la perspicacité sur la pièce suivante shadrach je l'apprécie. –

+0

Votre bienvenue :) – shadrachJabonir

Questions connexes