【问题标题】:Extracting server names from emails in Java从 Java 中的电子邮件中提取服务器名称
【发布时间】:2012-10-10 17:00:33
【问题描述】:

我想使用 Substring 从字符串中提取服务器名称。我不确定是否应该迭代循环或使用StringTokenizerindexoflastindex 或其他任何方法。

基本要求是,我应该使用substring()

例如:

 id@yahoo.com  ,  my@gmail.com etc

这在段落中,应该像这样打印服务器名称:

Server names: yahoo,   gmail ... 

【问题讨论】:

    标签: java regex string substring


    【解决方案1】:

    假设这是一项家庭作业,以下几点应该可以帮助您完成:

    • 您要查找的子字符串在@ 符号之后开始一个字符
    • 服务器名称以字符串中的第一个点. 结尾
    • 您使用(您猜对了!)substring(from,to) 方法获取子字符串
    • substring 中的第一个索引包含;第二个索引不包含在内
    • 使用indexOf('x') 方法查找字符的索引,将x 替换为您搜索的字符

    【讨论】:

      【解决方案2】:
      String emails = "id@yahoo.com  ,  my@gmail.com ,  luigi@microsoft.com";
      emails = emails.trim();  // get rid of spaces.
      String[] parts = emails.split(",");  // emails array.
      
      for (String email : parts) 
      {
          String temp = email.substring(email.indexOf("@") + 1); // e.g. @google.com
          String serverName = temp.substring(0, temp.indexOf("."));  // e.g. google
          System.out.println(serverName);  //prints google
      }
      

      样本运行(针对单个输入):

      输入: mario@google.com 输出:google

      输入: alvaro.arbeloa@realmadrid.com 输出:realmadrid

      输入: luigi@forest.yahoo.com 输出:森林

      编辑:如果您的电子邮件没有用逗号或任何其他分隔符分隔,那么您可以使用此代码提取单个电子邮件地址:

      String emails = "id@yahoo.com    my@gmail.com";
      String[] parts = emails.split("\\s+");
      

      说明我这次没有使用trim()。拆分后,您可以再次使用上述相同的 for 循环。

      【讨论】:

      • 谢谢,我这样做不止一封电子邮件,我的意思是在一段仅包含电子邮件地址的段落中,例如 sample@gmail.com sample@yahoo.com sample@hotmail.com .. 请帮助在这方面,如果我应该为数组或其他东西迭代循环,
      • 是的,它适用于此,但如果输入是这样的 id@gmail.com Id@yahoo.com id@hotmail 等等完整的段落......所以
      • 是的,它有效.. 非常感谢您的即时帮助,你真的让我很容易。谢谢
      • 我们可以用这种风格做一些事情吗 for(i=0; i
      • @Sikander 当然可以。我在回答中使用的 for 循环称为增强型 for 循环。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      相关资源
      最近更新 更多