JavaScript实现长文本按指定行号区间分段并匹配对应分类标题
JavaScript实现方案
核心逻辑
你原有的实现是按固定字符数拆分文本,不符合按行拆分、按区间分类的需求,正确实现分为两步:
- 按换行符拆分访谈文本为行数组,统一调整为496行长度(不足补空行,超出截取前496行)
- 按照给定的行号区间,将对应行内容匹配到对应分类标题下
完整代码
const strpar = props.transcriptstring; // 步骤1:将文本按换行拆分为行数组,兼容Unix和Windows换行格式 let lines = strpar.split(/\r?\n/); // 统一调整为496行 if (lines.length < 496) { // 不足496行则补空行 lines = lines.concat(new Array(496 - lines.length).fill('')); } else { // 超出496行则截取前496行 lines = lines.slice(0, 496); } // 步骤2:按区间匹配分类 const ptr = [97, 186, 286, 380, 433, 496]; const categoryTitles = ['Introduction', 'Technical Discussion', 'Abstract', 'Description', 'Output', 'Conclusion']; const categorizedContent = {}; let startLine = 0; ptr.forEach((endLine, index) => { const currentTitle = categoryTitles[index]; // 截取对应区间的行,拼接为完整文本存入结果 categorizedContent[currentTitle] = lines.slice(startLine, endLine).join('\n'); startLine = endLine; }); // 输出最终结果,可根据需求调整返回格式 console.log(categorizedContent);
说明
上述代码默认行号从0开始计数,如果你使用的是1开头的行号规则,只需将slice(startLine, endLine)调整为slice(startLine - 1, endLine)即可。
内容的提问来源于stack exchange,提问作者Muttarab Ahmad
相关产品推荐
相关产品推荐

