我有一个变量temp
:
String temp = "Ms Abc`<abc@gmail.com`>;Mr Cde`<cde@mail.com`>;Miss Xyz`<xyz@mail.com`>";
现在我必须将此变量temp
字符串拆分为ArrayList
或String[]
,以便我可以提取title
,name
,{{1}用于插入数据库。我只能使用以下代码拆分电子邮件ID:
emailid
但是我在获取标题和名称方面遇到了问题,因为我坚持逻辑。
如何做到这一点?
答案 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]);
}
但是使用这种方法,您需要确保值的格式相同。格式的任何更改都将导致应用程序中的代码或异常失败。 我希望这有帮助。