如何在java中比较字符串和动态文本?

如何在java中比较字符串和动态文本?,java,selenium-webdriver,Java,Selenium Webdriver,有一个字符串: “已创建登录名1234” 这里1234是一个动态文本。 如何在一次拍摄中比较整个字符串 我确实知道如何使用“”(空格)进行拆分,然后进入数组,使用正则表达式断言它: assertTrue(dynamicText.substring(1,5).equals([0-9]+) 但这需要更多的代码行。我想知道除此之外是否还有其他有效的编码方法。谢谢 您的输入主要有两个可见的断言: 在输出中断言静态 assertTrue(dynamicText.contains("Login") &

有一个字符串: “已创建登录名1234” 这里1234是一个动态文本。 如何在一次拍摄中比较整个字符串

我确实知道如何使用“”(空格)进行拆分,然后进入数组,使用正则表达式断言它:

assertTrue(dynamicText.substring(1,5).equals([0-9]+)


但这需要更多的代码行。我想知道除此之外是否还有其他有效的编码方法。谢谢

您的输入主要有两个可见的断言:

  • 在输出中断言静态

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