1

我有一个像[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]. 我想用花括号分割这个字符串。输出必须是,

abc,1

eee,2

fff,5,jjj

kkk,9

我需要找出元素的数量。对于上面的例子,元素的数量是 4

4

5 回答 5

1
var a = "[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]".slice(2, -2).split('},{');
于 2013-03-02T15:01:06.197 回答
1

制作一个正则表达式以删除[]和字符。{}

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

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

于 2013-03-02T14:57:06.490 回答
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( /^\{/, '' );
于 2013-03-02T15:25:41.627 回答
0

你可以试试把牙套换掉。就像是:

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

或者,将其转换为 json 对象并遍历其成员。

于 2013-03-02T14:55:34.613 回答
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}"from{a{bc,1}}"a{bc},1"from因为在检查逗号后{a{bc},1}的期待。(?=\s*{)

于 2013-03-02T15:09:50.407 回答