Javascript 将字符串解析为仅带开始标记的数组
我有一个文本区域,文本格式如下:Javascript 将字符串解析为仅带开始标记的数组,javascript,regex,arrays,Javascript,Regex,Arrays,我有一个文本区域,文本格式如下: {verse1} [Am]Bla bla bla bla[B] ... {verse2} ... {verse3} ... 我需要用纯Javascript将id解析为数组。当我只有开始符号时,我不知道如何解决这个问题 所需的输出类似于: [ {"verse1": "[Am]Bla bla bla bla[B]"}, {"verse2": "..."}, {"verse3": "..."} ] 注:“{”…}”之间的名
{verse1}
[Am]Bla bla bla bla[B]
...
{verse2}
...
{verse3}
...
我需要用纯Javascript将id解析为数组。当我只有开始符号时,我不知道如何解决这个问题
所需的输出类似于:
[
{"verse1": "[Am]Bla bla bla bla[B]"},
{"verse2": "..."},
{"verse3": "..."}
]
注:“{”…}”之间的名称是用户定义的
编辑:现实生活示例:这是一种基本的操作方法。你可以在行动中看到它。但是,它是按行分割的,因此它假定了正确的空格和格式等。这不是最好或最漂亮的方法,但它是一个完全有效的示例 我通常不会发布一个完全可以工作的版本和“完美”的代码,因为它应该让你开始,给你一个想法,而不是完全解决它
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);
var数据=(函数(输入){
"严格使用",;
var lines=input.split(/\n/),
输出={},
当前键;
对于(变量i=0;i
你在说什么“id”?向我们显示您的期望输出。已添加期望输出。。。不需要包含部分的名称,而不是每个对象只有一个属性的对象数组,您可以创建一个对象,其中每个“{verseX}”东西都是属性。但是,只有当这些名称是唯一的时,这才有效。另外,你说的“当我只有起始符号时”是什么意思?在jsfiddle.net中创建一个实时演示,在textarea中使用更多的真实文本,同时显示你的{verse}
语法看起来像什么,这对我来说已经足够了。我被卡住了,一看到你的代码我就有了一个惊喜。非常感谢。