Javascript 在创建json文件时,仅在句子的最后一点后读取并包装

Javascript 在创建json文件时,仅在句子的最后一点后读取并包装,javascript,reactjs,file,reduce,subtitle,Javascript,Reactjs,File,Reduce,Subtitle,文件: WEBVTT 00:00:00.000 --> 00:00:12.920 你好 你好 00:00:26.040 --> 00:00:26.960 你好 00:00:26.040 --> 00:00:26.960 嗨,嗨 00:00:26.040 --> 00:00:26.960 嗨..嗨 00:00:26.040 --> 00:00:26.960 嗨…嗨。 我的结果是: [ { “时间字符串”:“00:00:00.000-->00:00:12.920”, “from”:“00:00:0

文件:

WEBVTT
00:00:00.000 --> 00:00:12.920
你好
你好
00:00:26.040 --> 00:00:26.960
你好
00:00:26.040 --> 00:00:26.960
嗨,嗨
00:00:26.040 --> 00:00:26.960
嗨..嗨
00:00:26.040 --> 00:00:26.960
嗨…嗨。
我的结果是:

[
{
“时间字符串”:“00:00:00.000-->00:00:12.920”,
“from”:“00:00:00.000”,
“收件人”:“00:00:12.920”,
“字符串”:“您好。\nHi。”
},
{
“时间字符串”:“00:00:26.040-->00:00:26.960”,
“from”:“00:00:26.040”,
“收件人”:“00:00:26.960”,
“字符串”:“嗨。”
},
{
“时间字符串”:“00:00:26.040-->00:00:26.960”,
“from”:“00:00:26.040”,
“收件人”:“00:00:26.960”,
“字符串”:“嗨,嗨”
},
{
“时间字符串”:“00:00:26.040-->00:00:26.960”,
“from”:“00:00:26.040”,
“收件人”:“00:00:26.960”,
“字符串”:“嗨..嗨”
},
{
“时间字符串”:“00:00:26.040-->00:00:26.960”,
“from”:“00:00:26.040”,
“收件人”:“00:00:26.960”,
“字符串”:“嗨……嗨。”
}
]
Json结果预期:

[
{
“时间字符串”:“00:00:00.000-->00:00:12.920”,
“from”:“00:00:00.000”,
“收件人”:“00:00:12.920”,
“字符串”:“您好。\nHi。”
},
{
“时间字符串”:“00:00:26.040-->00:00:26.960”,
“from”:“00:00:26.040”,
“收件人”:“00:00:26.960”,
“字符串”:“嗨。”
},
{
“时间字符串”:“00:00:26.040-->00:00:26.960”,
“from”:“00:00:26.040”,
“收件人”:“00:00:26.960”,
“字符串”:“嗨。\nHi”{
常数v=文本
.replace(“WEBVTT”和“”)
.replace(/[\r\n]{2,}/g,“\n”)
.替换(“\n”和“);
常量行=v.split(“\n”);
设inc=-1;
const sub=行。reduce((acc、d、index、array)=>{
const test=new RegExp(\\b(\\d{2}:\\d{2}:\\d{2})\\.(\\d{3})\\b”).test(
D
);
如果(测试){
inc++;
常量a=d.split(“-->”).filter((e)=>e!==“-->”);
acc.push({timeString:d,from:a[0].trim(),to:a[1].trim()});
}否则{
设a=acc[inc]?.字符串;
如果(a!==未定义)a+=`\n${d}`;
否则a=d;
acc[inc]={…acc[inc],字符串:a};
}
返回acc;
}, []);
控制台日志(sub);
});
返回;
}
我希望得到的结果是,每当在文件中以文本形式出现时,字符串字段中的一个单词或短语以句点结尾,它就会被放入
\n
,如我希望的结果所示,但必须考虑以下情况

  • 如果在该点之后没有任何内容,则不需要放置
    \n
  • 如果出现了另一个周期,则必须在最后一段之后才放< <代码> \n>代码>,例如当有两个或三个暂停点时(如我在文件中考虑的最后两个例子)。
  • 链接:

    你能帮我一个忙吗?

    可能是个解决办法

    以下内容将单个
    的序列替换为
    \n
    ,但仅当其后面没有任何
    或新行(
    \n
    )且后面没有序列结尾(
    $
    )时:

    const finder=/\.(?![\n.])(?!$)/g;
    常量mangle=(str)=>str.replace(finder),。\n');
    log(mangle('Hi.\nHi.');/“Hi.\nHi.”
    console.log(mangle('Hi.');/“Hi.”
    console.log(mangle('Hi.Hi'));/“Hi.\nHi”
    console.log(mangle('Hi..Hi'));/“Hi..\nHi”
    console.log(mangle('Hi…Hi.');/“Hi…\nHi.”
    Thx,