如何将元组字符串提取到数据结构中?

时间:2015-07-05 17:15:34

标签: javascript regex

我是新来的。我正在尝试将以下元组更改为javascript中的多维数组。元组字符串:str:"(4,7,1),(8,9,6),(3,5,7)"。 我可以想到用for循环来做这件事。我正在寻找足够的方法来做到这一点。一种方法是在javascript中使用RegEx。我在正则表达方面不擅长。 有人可以帮帮我吗?提前致谢!

2 个答案:

答案 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()))