仅使用开始标记将字符串解析为数组

时间:2013-12-01 17:59:09

标签: javascript regex arrays

我有一个TextArea,其格式为以下格式:

{verse1}
   [Am]Bla bla bla bla[B]
   ...
{verse2}
   ...
{verse3}
   ...

我需要在纯Javascript中将id解析为数组。当我只有起始符号时,我不知道如何解决这个问题。

所需的输出类似于:

[
   {"verse1": "[Am]Bla bla bla bla[B]"},
   {"verse2": "..."},
   {"verse3": "..."}
]

P.S。:'{'...'}'之间的名称是用户定义的。

编辑:现实生活中的例子:http://pastebin.com/TpZmeP1Y

1 个答案:

答案 0 :(得分:1)

这是一种基本的方法。你可以在行动中看到它 here (fiddle) 。但是,它按行分割,因此它假设正确的空格和格式等。这不是最好或最漂亮的方式 - 但它是一个完全有效的例子。

我通常不会发布一个完全正常的版本和“完美”的代码,因为它应该让你开始并给你一个想法,而不是完全解决它。

var data = (function (input) {
    'use strict';

    var lines = input.split(/\n/),
        output = {},
        currentKey;
    for (var i = 0; i < lines.length; i++) {
        var line = lines[i];
        if (line.match(/^\{\w+\}$/)) {
            currentKey = line.substr(1, line.length - 2);
            output[currentKey] = "";
        } else {
            output[currentKey] += line;
        }
    }

    return output;
})(document.getElementById('input').innerHTML);

console.log(data);