代码之家  ›  专栏  ›  技术社区  ›  blueren

在逗号分隔的字符串中添加引号

  •  3
  • blueren  · 技术社区  · 7 年前

    我拥有的:

    var a = "1.1.1.1,2.2.2.2,3.3.3.3"

    var a = '1.1.1.1','2.2.2.2','3.3.3.3'

    我正在尝试:

    var a = "1.1.1.1,2.2.2.2,3.3.3.3"
    var b = a.split(",")
    var c
    for (var i=0;i<b.length; i++)
        {
            c.concat("\'").concat(b[i]).concat("\',\"")
        }
    

    我从上面得到了什么

    "'1.1.1.1','"

    我只能得到第一个元素的权利,我该如何纠正这一点?

    这个问题的背景:

    如: params:!('1.1.1.1','2.2.2.2')

    而my db将参数值作为CSV字符串包含。

    "1.1.1.1,2.2.2.2,3.3.3.3"

    5 回复  |  直到 7 年前
        1
  •  8
  •   gurvinder372    7 年前

    试试这个

    var a = "1.1.1.1,2.2.2.2,3.3.3.3";
    
    var b = "'" + a.split( "," ).join( "','" ) + "'";
    
    console.log( b );
        2
  •  2
  •   Amit    7 年前

    var a = "1.1.1.1,2.2.2.2,3.3.3.3";
    
    var b = "'" + a.replace(/,/g, "','") + "'";
    
    console.log( b );
        3
  •  1
  •   Ray Toal    7 年前

    您的问题的简单解决方案如下所示:

    > line = '1.1.1.1,2.2.2.2,3.3.3.3'
    '1.1.1.1,2.2.2.2,3.3.3.3'
    > '"' + line.replace(/,/g, '","') + '"'
    '"1.1.1.1","2.2.2.2","3.3.3.3"'
    

    > "'" + line.replace(/,/g, "','") + "'"
    '\'1.1.1.1\',\'2.2.2.2\',\'3.3.3.3\''
    

    然而,听起来您需要的是一个成熟的CSV解析器,用于处理在输入中嵌入引号、逗号、新行和其他疯狂字符的情况。

    不过,这个天真的解决方案似乎与您试图做的是一致的,并且可能会说明为什么您的方法没有达到预期效果。

        4
  •  1
  •   Will_Panda    7 年前

    var a = "1.1.1.1,2.2.2.2,3.3.3.3"
    var b = a.split(",")
    var c = ""
    for (var i=0;i<b.length; b++)
    {
        c.concat("\'").concat(b[i]).concat("\',\"")
        console.log(b)
    }
        5
  •  1
  •   Andrzej Smyk    7 年前

    例如,可以使用数组在变量中存储多个值。 '"1.1.1.1","2.2.2.2","3.3.3.3"'

    var a = "1.1.1.1,2.2.2.2,3.3.3.3";
    var b = a.split(',').map(function (str) {
      return '"' + str+ '"';
    }).join(',');
    console.log(b);