2017-10-04 174 views
1

我有什麼:添加引號一個逗號分隔字符串

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

我只能得到第一個元素右饒人,我怎麼糾正呢? 另外,在JS中,甚至可能存儲類似'1.1.1.1','2.2.2.2','3.3.3.3'的變量?

的背景這個問題:

我有一個iframe的源是kibana查詢。事實上,查詢將以上述格式將值傳遞給特定的參數。

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

雖然我的數據庫包含帕拉姆值CSV的字符串。

例如, "1.1.1.1,2.2.2.2,3.3.3.3"

+0

能否請您確認,如果你的**我需要什麼:**不包含錯字。爲什麼有一個隨機的'''? – shash678

+0

你想存儲多個值在一個變量或是一個字符串? – Walk

+0

@ shash678 - 道歉,這是一個錯字 @Walk - 我需要能夠取代csv我已經取代了格式爲''''string','string','string''''的值的實際查詢。 – blueren

回答

3

試試這個

var a = "1.1.1.1,2.2.2.2,3.3.3.3"; 
 

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

 
console.log(b);

+0

對不起,額外的「最後是我的一個錯字。 – blueren

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解析器,用於處理在輸入中嵌入了引號和逗號以及新行和其他瘋狂字符的情況。

雖然天真的解決方案似乎與您正在嘗試做的事情一致,並且可能會說明您的方法爲何不足。

+0

謝謝雷,我現在還沒有找到一個完整的解決方案。非常微不足道的東西就綽綽有餘! :) – blueren

1

你並不需要處理重複這一點,使用正規更換:

var a = "1.1.1.1,2.2.2.2,3.3.3.3"; 
 

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

 
console.log(b);

1

你的代碼工作,你打算。你可以附加到C沒有聲明?

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

1

可以通過使用陣列例如存儲在一個變量幾個值。 如果你想獲得字符串如'"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);