首页 > 解决方案 > 使用正则表达式将带制表符的文本转换为有效的 JSON

问题描述

我尝试转换从音频软件(大胆)导出的这个纯文本

0.147652    0.983684    noing_grf
2.316547    3.609503    boing_4r4

像这样的有效json对象格式 在此处输入图像描述

{
    'noing_grf': { start: 0.147652, end: 0.983684 },
    'boing_4r4': { start: 2.316547, end: 3.609503 },
}

我尝试的模式是这个([^\t\n]+) 但我认为我需要一个完整的例子来执行。

任何正则表达式专业人士都可以帮助我做到这一点,我一点也不成功!我的目标是从音频数据轨道导出标签和区域,而不是在 js 中加载并转换为 json 格式来管理spriteAudio像这个 API。 http://pixijs.io/pixi-sound/examples/sprites.html

标签: javascriptjsonregexregex-groupaudacity

解决方案


您是否必须使用正则表达式来执行此操作?您可以在 javascript(或任何其他编程语言)中非常简单地做到这一点。

const data = `0.147652  0.983684    noing_grf
2.316547    3.609503    boing_4r4`;

const dictionary = {};
const lines = data.split("\n");
lines.forEach(line => {
    line = line.split("\t");
    dictionary[line[2]] = { start: line[0], end: line[1] };
});

生成的字典将具有您想要的格式:

{
    noing_grf: { start: '0.147652', end: '0.983684' },
    boing_4r4: { start: '2.316547', end: '3.609503' }
}

推荐阅读