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

时间:2017-10-04 06:03:14

标签: javascript underscore.js

我有什么:

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')

我只能让第一个元素正确,我该如何纠正这个? 另外,在JS中,是否有可能将“1.1.1.1”,“2.2.2.2”,“3.3.3.3”等内容存储在变量中?

此问题的背景:

我有一个iframe,其源代码是kibana查询。实际上,查询以上述格式将值赋予特定参数。

例如: "1.1.1.1,2.2.2.2,3.3.3.3"

虽然我的数据库包含param值为CSV字符串。

EG。 @Component({ selector: 'my-app', template: ` <p> <label>First Name:</label> <input type="text" [ngModel]="user.firstName" required> </p> `, providers: [myService] })

5 个答案:

答案 0 :(得分:3)

试试这个

setlocal /?

答案 1 :(得分:1)

您问题的天真解决方案如下所示:

> 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解析器,用于处理你的输入中嵌入了引号和逗号以及新行和其他疯狂字符的情况。

然而,天真的解决方案似乎符合您的目的,并可能说明您的方法不足的原因。

答案 2 :(得分:1)

您不需要为此处理迭代,请使用RegExp替换:

&#13;
&#13;
var a = "1.1.1.1,2.2.2.2,3.3.3.3";

var b = "'" + a.replace(/,/g, "','") + "'";

console.log( b );
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您的代码按预期工作。你可以在没有声明的情况下附加到c吗?

&#13;
&#13;
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)
}
&#13;
&#13;
&#13;

答案 4 :(得分:1)

例如,您可以使用数组在变量中存储多个值。 如果您想获得类似'"1.1.1.1","2.2.2.2","3.3.3.3"'的字符串,可以使用以下代码:

&#13;
&#13;
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);
&#13;
&#13;
&#13;