【问题标题】:Getting All Values from Comma Separated String in Javascript在 Javascript 中从逗号分隔的字符串中获取所有值
【发布时间】:2015-02-08 04:12:37
【问题描述】:

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

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

我想在 3 个不同的变量中获取所有以上 3 个逗号分隔的值。到目前为止,我所取得的成就是在 elem2 变量中获取最后一个逗号分隔值,并在 elem1 变量中获取其他 2 个逗号分隔值第一个和第二个。

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 

【问题讨论】:

  • 你可以等待 ES6 并且可以这样做 Destructuring assignment 像这样:var [email, number, id] = session.split(",")

标签: javascript regex


【解决方案1】:

您可以尝试以下方法:

// 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 的名称有点含糊,以后这些名称可能连您自己都难以理解,更不用说其他阅读您代码的人了。

【讨论】:

  • @JohnSmith 你欢迎老兄!我很高兴能帮上忙。
  • 只是想问一下我们能否让这个程序通用,我的意思是它适用于任意数量的变量??
  • @JohnSmith 是的,你可以。但要注意字符串中每个值的位置。例如,如果number 是第一个,email 是第二个,"123456,mick@yahoo.com,f_id=8"; 那么你会为错误的变量分配错误的值。但是,如果变量的排列无关紧要,那么您将来不必解决任何问题。
【解决方案2】:

您还可以将会话数据存储在JavaScript 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.
    }
]

【讨论】:

    【解决方案3】:

    您也可以使用带有回调的 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);
    

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 2019-05-08
      • 1970-01-01
      • 2014-03-22
      • 2011-09-07
      • 1970-01-01
      • 2017-07-22
      • 2017-06-06
      • 1970-01-01
      相关资源
      最近更新 更多