我有一个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
答案 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);