java string []拆分电子邮件ID

时间:2010-11-10 02:25:44

标签: java parsing split

我有一个变量temp

String temp = "Ms Abc`<abc@gmail.com`>;Mr Cde`<cde@mail.com`>;Miss Xyz`<xyz@mail.com`>";

现在我必须将此变量temp字符串拆分为ArrayListString[],以便我可以提取titlename,{{1}用于插入数据库。我只能使用以下代码拆分电子邮件ID:

emailid

但是我在获取标题和名称方面遇到了问题,因为我坚持逻辑。

如何做到这一点?

2 个答案:

答案 0 :(得分:3)

首先在;上拆分以分隔每个条目:

String[] entry = temp.split(";");

对于您的示例,entry将包含:

[0] => "Ms Abc`"
[1] => "Mr Cde`"
[2] => "Miss Xyz`"

对于单个条目,现在我们要提取称呼(我认为您称之为title),姓名和电子邮件地址。您可以使用简单的正则表达式来执行此操作:

Pattern p = Pattern.compile("(\\w+)\\s(\\w+)`<(.+)`>");

然后迭代entry并从正则表达式中读取组:

// for each of the entries
for(String e : entry){
    Matcher m = p.matcher(e);
    if(m.find()){
        String title = m.group(1);
        String name  = m.group(2);
        String email = m.group(3);
    }
}

答案 1 :(得分:1)

我建议多次使用split并将值存储在像ArrayList这样的集合中。

    String temp = "Ms Abc`<abc@gmail.com`>;Mr Cde`<cde@mail.com`>;Miss Xyz`<xyz@mail.com`>";
     /* Initializing arralists */
    ArrayList<String> title = new ArrayList<String>();
    ArrayList<String> name = new ArrayList<String>();
    ArrayList<String> email = new ArrayList<String>();

    /* Splitting each record */
    String [] eachRecord = temp.split(";");
    for (int i = 0; i < eachRecord.length; i++) {

        /* Fetch value in each record */
        String [] intermediateValue = eachRecord[i].split(" ");
        title.add(intermediateValue[0]);
        intermediateValue = intermediateValue[1].split("`<");
        name.add(intermediateValue[0]);
        intermediateValue = intermediateValue[1].split("`>");
        email.add(intermediateValue[0]);
    }

但是使用这种方法,您需要确保值的格式相同。格式的任何更改都将导致应用程序中的代码或异常失败。 我希望这有帮助。