javascrip字符串转数组

格式是:xxxx(yyy)(zzzzz)
可能有多个括号
转换为['xxxx',yyy,zzzzz]
有什么优雅的方法吗?

阅读 4.1k
4 个回答

(替换成,,把(替换成空字符串,然后用,分隔,看这样行么:

var text = "xxxx(yyy)(zzzzz)";
var arr = text.replace(/\(/g, ',').replace(/\)/g, '').split(',');
console.log(arr); // ["xxxx", "yyy", "zzzz"]
text = "xxxx(yyy)(zzzzz)";
Array.prototype.addItem = function(item){this.push(item);return this}
var arr = text.match(/\((.+?)\)/g).map(function(v){return v.slice(1,-1)}).reverse().addItem(text.match(/.+?\(/)[0].slice(0,-1)).reverse();
console.log(arr);

从你的结果来看,yyy zzz应该是Number吧,只要在map的回调函数里面做下处理就好了。

正则表达式。

用正则,看看还有没有优雅的,正确性有待验证

var xx = "xxxx(yyy)(zzzzz)";
var arr = xx.split(/(?:\)\(|\)|\()/);
arr.pop();
console.log(arr);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题