我是新来的。我正在尝试将以下元组更改为javascript中的多维数组。元组字符串:str:"(4,7,1),(8,9,6),(3,5,7)"
。
我可以想到用for循环来做这件事。我正在寻找足够的方法来做到这一点。一种方法是在javascript中使用RegEx。我在正则表达方面不擅长。
有人可以帮帮我吗?提前致谢!
答案 0 :(得分:0)
您可以自己解析它。这是工作代码段中的一种方式:
function parseTuple(t) {
var items = t.replace(/^\(|\)$/g, "").split("),(");
items.forEach(function(val, index, array) {
array[index] = val.split(",").map(Number);
});
return items;
}
var data = "(4,7,1),(8,9,6),(3,5,7)";
var result = parseTuple(data);
document.write(JSON.stringify(result));
您也可以使用JSON.parse()
通过将元组字符串转换为合法的JSON来为您解析:
function parseTuple(t) {
return JSON.parse("[" + t.replace(/\(/g, "[").replace(/\)/g, "]") + "]");
}
var t = "(4,7,1),(8,9,6),(3,5,7)";
var result = parseTuple(t);
document.write(JSON.stringify(result));
答案 1 :(得分:-1)
您可以使用eval。在这里,这是您的原型函数tuple
。
String.prototype.tuple = function(){
return eval("[" + this.replace(/\(/g,"[").replace(/\)/g,"]") + "]")
}
这是您对此原型函数的示例用法。
var s = "(4,7,1),(8,9,6),(3,5,7)";
console.log(s.tuple())
如您所见,它很简单快速,您可以使用下面的jsFiddle尝试它。
您只需使用s.tuple()
以下是jsFiddle
为什么我要使用eval而不是JSON.parse?
如果您确定输入,则使用eval()
比JSON.parse()
更好。
JSON.parse()
JSON.parse()
也使用eval()
,请检查this eval()
比JSON.parse()
String.prototype.tuple = function(){
return eval("[" + this.replace(/\(/g,"[").replace(/\)/g,"]") + "]")
}
var s = "(4,7,1),(8,9,6),(3,5,7)";
document.write(JSON.stringify(s.tuple()))