【问题标题】:Check for email id in a text in java检查java文本中的电子邮件ID
【发布时间】:2015-10-25 05:00:37
【问题描述】:

我正在使用 java 编写 Appium 测试脚本,现在我想比较两封电子邮件,但在比较之前,我必须通过拆分字符串从文本中获取电子邮件 ID。 例如:我在我的应用程序“您的帐户电子邮件与 pankaj@gmail.com 关联”中有这样的文本,所以我想仅从该文本中拆分并捕获此电子邮件 ID,并将其与文本框中显示的其他电子邮件 ID 进行比较。 我怎样才能做到这一点 ?? 目前我正在这样做:

WebElement email_id= driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATextField[1]"));

String edit_email=email_id.getText();

System.out.println(edit_email);

但是获取全文。我该如何拆分它。

【问题讨论】:

  • 您的文字只会是这样的“您与 pankaj@gmail.com 关联的帐户电子邮件”?
  • 是的,我的文本仅采用这种格式。它以电子邮件 ID 结尾。

标签: java webdriver testng appium


【解决方案1】:

您应该尝试使用java.util.regex.Patternjava.util.regex.Matcher 的正则表达式。我准备了一个从给定文本块中查找电子邮件 ID 的 sn-p。

    String text = "your account email associated with pankaj@gmail.com and he has emailed someone@gmail.com.";
    Pattern pattern = Pattern.compile("[\\w]+[\\d\\w]*(@)[\\w]+[\\w\\d]*(\\.)[\\w]+");
    Matcher matcher = pattern.matcher(text);
    while(matcher.find()){
        System.out.println(matcher.group());
    }

这应该会有所帮助。

【讨论】:

  • 我什至想过建议用户使用正则表达式,但似乎没有简单或好的电子邮件地址正则表达式。参考这个 - stackoverflow.com/questions/201323/…
  • 此正则表达式还将返回任何包含“@”和“.”的字符串符号。
  • 嗯,这取决于您为电子邮件 ID 制作的正则表达式。我只是举了一个例子。
  • 我还发现了这个解决方案,我正在获取文本并将 thiis 存储在用户输入电子邮件 ID 的变量中,然后我使用 IsEqual() 来比较两者。
【解决方案2】:

这对我有用:

    String s = "your account email associated with pankaj@gmail.com";
    s = s.replaceAll("^.+\\s", "");
    System.out.println(s);

【讨论】:

  • 这将返回文本中的最后一个标记,该标记可能不是电子邮件地址。这仅适用于给定的文本。
  • 我同意这个问题包含“这样的文字”,假设它不是很准确。如果 OP 提供更高的精度,我将使用更精细的正则表达式模式进行更新。
  • 文本将保持不变,但电子邮件ID因用户而异。
【解决方案3】:

如果您确定您尝试拆分的文本是标准格式(或一些具有不同电子邮件 ID 的静态内容),您可以使用正则表达式来解析和检索电子邮件地址,如 Nitheesh Shah 和 dotvav 中提到的他们的答案。

否则,您必须遵循以下线程中提到的几个 RFC 才能完美检索和验证电子邮件地址(请参阅下面线程顶部显示的最佳答案)。

Using a regular expression to validate an email address

【讨论】:

    【解决方案4】:

    正如 OP 所说,它将仅以电子邮件 ID 结尾,另一种解决方案可以是:

    WebElement email_id= driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATextField[1]"));
    String s[] = email_id.getText().split(" ");
    System.out.println(s[s.length-1]);
    

    获取电子邮件 ID 后,您可以将其与文本框中的另一封电子邮件进行比较。

    【讨论】:

      【解决方案5】:

      目前我正在使用它,它完美地为我工作。将解决方案实现为在主字符串中查找特定的电子邮件子字符串。

      String word = edit_email;
      
      String com_txt= email_text; //Edit page Static string
      
      Boolean same_txt =com_txt.contains(word);
      
      Boolean result=same_txt;
      
      if(result==true)
      
          {
      
      System.out.println(result);
      
      System.out.println("Edit screen & enter email screen contains the              same email");
      
      
          }
      

      这是进行比较的正确方法吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 2016-02-26
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        相关资源
        最近更新 更多