繁体   English   中英

Java,如果部分匹配

[英]Java if else on partial match

我已经进入Selenium WebDriver,并且仍然找到最令人困惑的示例。

我需要能够读取一个字符串(成功),并运行一个条件查询,询问是否存在特定的文本。

为了本文的缘故。

String oneoff = "Jeff is old"

我需要匹配Jeff,请参见下面的代码,只要Jeff存在于字符串中,我就想返回true。 如果杰夫不存在,那么我会检查哦,说50-75个其他名字。 但是,字符串可能包含其名称和其他无法控制的文本。 所以我必须做部分比赛。

问题1.我是否搞砸了,是否必须以我见过的那种疯狂格式构建每个正则表达式,还是我遗漏了一些明显的东西?

问题2。请问有人出于我的理智,请告诉我匹配Jeff的正确方法,文字可能在Jeff的名字之前和之后。

谢谢!

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");
}

这只是代码的功能部分,

因为Jeff存在于字符串中,所以我想返回true

那你可能应该用

if (oneoff.contains("Jeff")) 

由于matches使用正则表达式作为参数,因此if (oneoff.matches("Jeff"))仅在oneoff = "Jeff"时才返回true。

您无需为提供的代码使用match()。 而是使用oneoff.equals(“ String”)进行字符串匹配。 Match()更适合于正则表达式。 如果您想返回true,即使该字符串仅作为目标字符串的子集存在,也可以使用oneoff.contains(“ String”)。

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

我认为您应该改进代码,因为如果其他“ jeff”(例如“ JEef”或“ JEEF”或什至“ Jeef”)中包含Java,则Java可能无法识别其他字符串

我希望它能起作用,我曾经发现过像您一样的错误,然后尝试通过这种方式来克服它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM