2013-03-02 200 views
1

我有一個字符串,如[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]。我想用花括號分割這個字符串。輸出必須是,JavaScript:分割逗號分隔的字符串,但忽略花括號

abc,1 

eee,2 

fff,5,jjj 

kkk,9 

我需要找出no的元素。以上例子中沒有元素是4

+2

你必須覆蓋像'[{QWE,{RTY,眼壓}}等]'案件? – Eric 2013-03-02 15:00:44

+0

你的意思是什麼「*忽略引號中的花括號*」?請舉一些例子。向我們展示你的嘗試! – Bergi 2013-03-02 16:03:52

+0

埃裏克:沒有必要像這樣覆蓋 – 2013-03-03 04:18:26

回答

0

只是試試這個

var x = '[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]'; 
var items = x.match(/\{[^{]*(?=\})/g); 
for (var i in items) items[ i ] = items[ i ].replace(/^\{/, ''); 
0

您可以嘗試更換大括號。例如:

String.replace("{").replace("}").split(","); 

或者,將它變成一個json對象並遍歷其成員。

+0

這甚至不是有效的JSON。 – nhahtdh 2013-03-02 15:25:01

+0

我的錯誤。 Json在腦中的那一刻。 – SteveP 2013-03-02 16:27:54

1

製作一個正則表達式來刪除[],{}字符。

var str = "[{abc,1},{eee,2},{fff,5},{kkk,9}]"; 
str = str.replace(/[\[\]{}]/g, ""); 

工作實例:http://jsfiddle.net/72Kdd/

1
var a = "[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]".slice(2, -2).split('},{'); 
+1

+1,我更喜歡['slice'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/slice)到['substr'](https:// developer .mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substr),但afaik這個和我的代碼相差無幾。 – 2013-03-02 15:27:31

0

這裏是什麼,我相信你想要的。

var str = "[{abc,1},{eee,2},{fff,5},{kkk,9}]"; 

Array.prototype.map.call(// for each of 
    str // the string's 
     .match(/\{(.*?)\}(?:,(?=\s*{)|]$)/g), // matches to a certain pattern 
    function (e) { 
     return e.slice(1,-2); // take the middle chars 
    } 
); 
// Array ["abc,1", "eee,2", "fff,5", "kkk,9"] 

注:這會給"a{bc,1}"{a{bc,1}},並"a{bc},1"{a{bc},1}因爲外觀檢查逗號後向前(?=\s*{)的。

+0

如果你能夠使用['split'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split)獲得你想要的數據,而不是「匹配」它,因爲這是更多的代碼和效率較低。記住'split'也可以採用RegExp。 – 2013-03-02 15:30:35

相關問題