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

Java 如果字符串包含字母,则返回整个字符串,java,string,Java,String,很奇怪,但是: 假设您有一个巨大的html页面,如果该页面包含电子邮件地址(寻找@符号),您希望返回该电子邮件 到目前为止,我知道我需要这样的东西: String email; if (myString.contains("@")) { email = myString.substring("@") } 我知道如何到达@,但如何返回字符串以查找之前的内容等?如果myString是您从html页面收到的电子邮件的字符串 如果具有@权限,则可以返回相同的字符串。像下面这样 S

很奇怪,但是:

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

到目前为止,我知道我需要这样的东西:

 String email;

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

      email = myString.substring("@")
 }

我知道如何到达@,但如何返回字符串以查找之前的内容等?

如果
myString
是您从html页面收到的
电子邮件的字符串

如果具有
@
权限,则可以返回相同的字符串。像下面这样

String email;

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

      email = myString;
 }
这里的挑战是什么。。如果有挑战,你能解释一下吗

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

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

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;
}
static ArrayList getEmailAddresses(String str){
ArrayList结果=新建ArrayList();
Matcher m=Pattern.compile(“\\S+?@[^.]+(\\.[^.]+)*”).Matcher(str.replaceAll(“\\S”,”);
while(m.find()){
结果.添加(m.group());
}
返回结果;
}

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

仅通过@symbol进行检查可能不合适,因为在其他情况下也可能如此

通过互联网搜索或创建自己的,与电子邮件匹配的正则表达式模式。 (如果您愿意,还可以添加对电子邮件提供商的检查)[这是一个链接]()


并找出子字符串(以电子邮件为例)。

也许使用正则表达式更好?@algui91如果你用正则表达式解析HTML,你会被普鲁士马踢屁股。我保证。我不会使用纯字符串方法或正则表达式从HTML页面读取数据。有专门的工具用于web爬网和HTML解析。在我的脑海中,看看这甚至与html解析或爬行无关。你们这些家伙对regex+html太不屑一顾了。这只是一个简单的文本搜索。除非电子邮件地址会显示在
a
标记的
href
属性中。更不用说,将
@
用于其他目的是非常常见的,例如在Twitter和SE上。我怀疑的一方认为OP是在写垃圾邮件。对不起,myString实际上是整个html页面为什么你不能用请求参数将html页面发送到服务器?这使得你的生活很容易获得电子邮件作为一个单独的请求参数,你可以很容易地验证它…有任何挑战吗?对不起,myString实际上是整个html页面在这种情况下,我会更新我的答案。XD电子邮件前后是否有空格?