最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Adding quotes to a comma separated string - Stack Overflow

programmeradmin3浏览0评论

What I have:

var a = "1.1.1.1,2.2.2.2,3.3.3.3"

What I need:

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

What I'm trying:

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("\',\"")
    }

What I'm actually getting with the above

"'1.1.1.1','"

I'm only able to get the first element right, how do I rectify this? Also, in JS, is it even possible to have something like '1.1.1.1','2.2.2.2','3.3.3.3' stored in a variable?

A background to this problem:

I have an iframe whose source is a kibana query. The query in fact takes in values to a particular parameter in the above mentioned format.

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

While my db contains the param values as a string of CSV.

Eg. "1.1.1.1,2.2.2.2,3.3.3.3"

What I have:

var a = "1.1.1.1,2.2.2.2,3.3.3.3"

What I need:

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

What I'm trying:

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("\',\"")
    }

What I'm actually getting with the above

"'1.1.1.1','"

I'm only able to get the first element right, how do I rectify this? Also, in JS, is it even possible to have something like '1.1.1.1','2.2.2.2','3.3.3.3' stored in a variable?

A background to this problem:

I have an iframe whose source is a kibana query. The query in fact takes in values to a particular parameter in the above mentioned format.

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

While my db contains the param values as a string of CSV.

Eg. "1.1.1.1,2.2.2.2,3.3.3.3"

Share Improve this question edited Oct 4, 2017 at 8:31 blueren asked Oct 4, 2017 at 6:03 bluerenblueren 2,8604 gold badges34 silver badges48 bronze badges 4
  • Can you please confirm if your What I need: Does not contain a typo. Why is there a random "? – Sash Sinha Commented Oct 4, 2017 at 6:07
  • Do you want to store multiple values in one variable or is that one string? – Walk Commented Oct 4, 2017 at 6:09
  • @shash678 - Apologies, that was a typo. @Walk - I need to be able to replace the csv that I have in place of the actual query that takes in values of the format 'string','string','string' – blueren Commented Oct 4, 2017 at 6:14
  • You have b++ instead of I++ – bikeman868 Commented Oct 4, 2017 at 6:46
Add a ment  | 

5 Answers 5

Reset to default 10

Try this

var a = "1.1.1.1,2.2.2.2,3.3.3.3";

var b = "'" + a.split( "," ).join( "','" ) + "'";

console.log( b );

You don't need to deal with iterations for this, use a RegExp replace:

var a = "1.1.1.1,2.2.2.2,3.3.3.3";

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

console.log( b );

The naive solution to your problem looks like this:

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

or if the quotes need to be reversed:

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

However, it sounds like what you need is a full-blown CSV parser, to handle cases in which you have quotes and mas and new lines and other crazy characters embedded in your input.

The naive solution seems to be in line, though, with what you were trying to do, and might illustrate why your approach fell short.

Your code works as you intended. Can you append to c without declaring?

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

You can store several values in a variables by using array for example. If you want to get string like '"1.1.1.1","2.2.2.2","3.3.3.3"' you can use the following code:

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

发布评论

评论列表(0)

  1. 暂无评论