2013-03-02 214 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

相关问题