如何在java中比较字符串和动态文本?
有一个字符串: “已创建登录名1234” 这里1234是一个动态文本。 如何在一次拍摄中比较整个字符串 我确实知道如何使用“”(空格)进行拆分,然后进入数组,使用正则表达式断言它: assertTrue(dynamicText.substring(1,5).equals([0-9]+)如何在java中比较字符串和动态文本?,java,selenium-webdriver,Java,Selenium Webdriver,有一个字符串: “已创建登录名1234” 这里1234是一个动态文本。 如何在一次拍摄中比较整个字符串 我确实知道如何使用“”(空格)进行拆分,然后进入数组,使用正则表达式断言它: assertTrue(dynamicText.substring(1,5).equals([0-9]+) 但这需要更多的代码行。我想知道除此之外是否还有其他有效的编码方法。谢谢 您的输入主要有两个可见的断言: 在输出中断言静态 assertTrue(dynamicText.contains("Login") &
但这需要更多的代码行。我想知道除此之外是否还有其他有效的编码方法。谢谢 您的输入主要有两个可见的断言:
assertTrue(dynamicText.contains("Login") && dynamicText.contains("has been created"));
input
必须存在的原因是,否则您将从您找到的WebElement
中读取静态文本
简言之
String expectedOutput = "Login " + userInput + " has been created.";
assertTrue("The expected output is different!", dynamicText.equals(expectedOutput));
使用正则表达式:
if (s.matches("Login \\S+ has been created")) {
// code here
}
如果需要登录名,则不能使用方便的方法,而必须直接使用模式
类:
Pattern p = Pattern.compile("Login (\\S+) has been created");
Matcher m = p.matcher(s);
if (m.matches()) {
String login = m.group(1);
// code here
}
我找到了解决办法:
String expected = "Login 1234 has been created";
if(expected.matches("Login ([0-9]+) has been created"))
{
System.out.println("matched");
}
使用输出文本作为程序工作的输入是非常明智的。你没有包含1234的变量吗?你只是想检查字符串中是否有一系列数字吗?我有,但我把值放在这里是为了弄清楚。@Sweeper我想检查整个字符串和动态文本。如果整个字符串与检查动态部分的逻辑相匹配。如果变量部分已经存在,只需在代码中创建所需字符串并与实际字符串进行比较。在将模板
{“name”:“$name”,“age”:“$age”}
与{“name”:“Bob”,“age”:47}
进行比较时,这是如何工作的
String expected = "Login 1234 has been created";
if(expected.matches("Login ([0-9]+) has been created"))
{
System.out.println("matched");
}