在Javascript中从逗号分隔字符串中获取所有值

时间:2015-02-07 09:16:52

标签: javascript regex

我在JavaScript中有1个字符串变量,其中包含3个逗号分隔值,如下所示:

var session = "mick@yahoo.com,123456,f_id=8";

我希望在3个不同的变量中得到以上3个逗号分隔值。到目前为止我所获得的是在elem2变量中获取最后一个逗号分隔值,并在elem1变量中获得其他2个逗号分隔值1st和2nd。

var elem1 = session.split(",");

var elem2 = elem1.pop();

document.write("elem1 = "+elem1+"<br/>elem2 = "+elem2);

所以我的程序运行不正常,我需要快速工作的解决方案,以便我有另一个变量elem3,我将在浏览器中获得以下输出:

elem1 = mick@yahoo.com
elem2 = 123456
elem3 = f_id=8 

3 个答案:

答案 0 :(得分:5)

您可以尝试以下方法:

// Initially, we split are comma separated string value on commas.
// In the values an array of these values is stored.
var values = session.split(",");
// Then we get each value based on it's position in the array.
var email = values[0];
var number = values[1];
var id = values[2];

作为旁注,我建议你为上面的变量使用有意义的名称。名称elem1elem2elem3有点含糊不清,将来这些名称甚至可能会让您感到模糊,更不用说您的代码的其他读者了。

答案 1 :(得分:0)

您还可以将会话数据存储在JavaScript Object中。下面遍历每个拆分字符串并将其添加到Object。

var myData = {};

// ...

for(var i = 0, x = session.split(","); i < x.length; i++) {
    switch(i) {
        case 0: myData.email = x[i]; break;
        case 1: myData.number = x[i]; break;
        case 2: myData.f_id = x[i]; break;
    }
}

如果您正在处理多个数据值,最好制作一个对象数组,如上所述。

var myData = [];

// ...

myData.push({
    email: x[0],
    number: x[1],
    f_id: x[2]
});

等等。这是JSON Notation的一种形式。输出看起来像这样:

[
    {
        email: "mick@yahoo.com",
        number: "123456",
        f_id: "f_id=8"
    },
    {
        // Another session, etc.
    }
]

答案 2 :(得分:0)

您还可以将string.replace与回调一起用作参数。非常灵活!

检查以获取更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

对于您的用例,您最终可能会:

function writeParts(match, email, number, id, offset, string) {
    document.write("email = "+email+"<br/>number = "+number);
}
// match not-comma followed by a comma (three times)
session.replace(/([^,]+),([^,]+),([^,]+)/, writeParts);