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
)且后面没有序列结尾($
)时:
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,