从Java中的电子邮件中提取服务器名称

时间:2012-10-20 03:48:49

标签: java regex string substring

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

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

例如:

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

这在段落中,应该打印服务器名称,如下所示:

Server names: yahoo,   gmail ... 

2 个答案:

答案 0 :(得分:4)

假设这是一个家庭作业,这里有几点可以帮助你:

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

答案 1 :(得分: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循环。