如果字符串包含字母,则返回整个String

时间:2014-05-25 19:58:54

标签: java string

奇怪的是,但是:

假设您有一个庞大的html页面,如果该页面包含一个电子邮件地址(寻找@符号),您想要返回该电子邮件。

到目前为止,我知道我需要这样的事情:

 String email;

 if (myString.contains("@")) {

      email = myString.substring("@")
 }

我知道如何到达@但是如何回到字符串中以找到它之前的内容等?

4 个答案:

答案 0 :(得分:0)

如果myString是您从html页面收到的email的字符串,那么

如果@正确,则可以返回相同的字符串。类似下面的内容

String email;

 if (myString.contains("@")) {

      email = myString;
 }

这里面临的挑战是什么?如果是这样,你能解释一下这个挑战吗?

答案 1 :(得分:0)

String email;

if (myString.contains("@")) {
    // Locate the @
    int atLocation = myString.indexOf("@");
    // Get the string before the @
    String start = myString.substring(0, atLocation);
    // Substring from the last space before the end
    start = start.substring(start.lastIndexOf(" "), start.length);
    // Get the string after the @
    String end = myString.substring(atLocation, myString.length);
    // Substring from the first space after the start (of the end, lol)
    end = end.substring(end.indexOf(" "), end.length);
    // Stick it all together
    email = start + "@" + end;
}

这可能有点不对,因为我整天都在写javascript。 :)

答案 2 :(得分:0)

此方法将为您提供字符串中包含的所有电子邮件地址的列表。

static ArrayList<String> getEmailAdresses(String str) {
    ArrayList<String> result = new ArrayList<>();
    Matcher m = Pattern.compile("\\S+?@[^. ]+(\\.[^. ]+)*").matcher(str.replaceAll("\\s", " "));
    while(m.find()) {
        result.add(m.group());
    }
    return result;
}

答案 3 :(得分:0)

我想给你一个方法,而不是确切的代码。

仅使用@符号检查可能不合适,因为在其他情况下也可能。

通过互联网搜索或创建自己的,与电子邮件匹配的正则表达式模式。 (如果您愿意,您也可以为电子邮件提供商添加支票)[这是一个链接](http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

Get the index of a pattern in a string using regex并找出子字符串(在您的情况下是电子邮件)。