【发布时间】:2012-10-30 06:18:15
【问题描述】:
我有这个字符串:
"display, Name" <test@test.com>, display" Name <test@test.com>, test@test.com
我想把这个字符串分成一个数组
array[0] = "\"display, Name\" <test@test.com>"
array[1] = "display\" Name <test@test.com>"
array[2] = "test@test.com"
这是我的代码:
var comma = inQuotes = false;
for(var i=0;i<str.length;i++) {
if (str[i] == '"') inQuotes = !inQuotes;
comma = (str[i] == "," && !inQuotes) ? true : false;
item += (!comma) ? str[i] : "";
if(comma || i == str.length-1) {
items.push(item);
item = "";
}
}
我的问题是,如果字符串中有一个双引号而没有更近的字符串
感谢您的帮助...
【问题讨论】:
-
如果没有某种形式的一致性,这将很难。如果这些遵循电子邮件地址协议(
email@address.com、name <email@address.com和"name" <email@address.com>),这将容易得多。是否保证像您提供的那样格式不正确?我的流浪报价(打开而不关闭或关闭而不打开)将使这变得非常复杂。 -
@JasonMcCreary:这不是 CSV,而是格式错误的RFC2822 电子邮件地址列表。
-
我明白了。尽管如此,该解决方案仍可扩展。
标签: javascript regex