我有一个字符串,如[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]
。我想用花括号分割这个字符串。输出必须是,JavaScript:分割逗号分隔的字符串,但忽略花括号
abc,1
eee,2
fff,5,jjj
kkk,9
我需要找出no的元素。以上例子中没有元素是4
我有一个字符串,如[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]
。我想用花括号分割这个字符串。输出必须是,JavaScript:分割逗号分隔的字符串,但忽略花括号
abc,1
eee,2
fff,5,jjj
kkk,9
我需要找出no的元素。以上例子中没有元素是4
只是试试这个
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(/^\{/, '');
制作一个正则表达式来删除[
,]
,{
和}
字符。
var str = "[{abc,1},{eee,2},{fff,5},{kkk,9}]";
str = str.replace(/[\[\]{}]/g, "");
var a = "[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]".slice(2, -2).split('},{');
+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
这里是什么,我相信你想要的。
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*{)
的。
如果你能够使用['split'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split)获得你想要的数据,而不是“匹配”它,因为这是更多的代码和效率较低。记住'split'也可以采用RegExp。 – 2013-03-02 15:30:35
你必须覆盖像'[{QWE,{RTY,眼压}}等]'案件? – Eric 2013-03-02 15:00:44
你的意思是什么“*忽略引号中的花括号*”?请举一些例子。向我们展示你的尝试! – Bergi 2013-03-02 16:03:52
埃里克:没有必要像这样覆盖 – 2013-03-03 04:18:26