hen*_*per 5 javascript reduce typescript
我想按句子截断文本。
示例文本:'Lorem ipsum dolor sat amet, consectetur adipiscing elit!Ut vehicula laoreet urna, commodo vulputate massa luctus in. Sed volutpat nunc vitae urna auctor, at tempus enim rhoncus。Arcu mattis commodo 的 Morbi 演员?Morbi in ornare arcu, sagittis scelerisque risus。Aenean lobortis lacinia nisl, nec laoreet ipsum viverra ac. Praesent venenatis eleifend risus et pulvinar。Sed vitae nulla sed purus ultrices mattis。Nulla facilisi。
这就是我到目前为止所拥有的:
const truncate = (text: string, limit: number) => {
const reduced = text
.split(/[?!\.]/)
.reduce((acc, cur) => {
acc = (acc + cur).length < limit? `${acc}. ${cur}` : acc;
return acc;
});
return reduced.length > limit? reduced.slice(limit - 3) + '...' : reduced;
};
console.log(truncate(text, 300));
Run Code Online (Sandbox Code Playgroud)
问题是它总是放点而不是以前的实际标点符号,有时它甚至在最后放点。
这里举几个例子:
限制:50
1 个句子的长度为 24 // 24
2 个句子的长度为 20 // 44 <- 停在这里
3 个句子的长度为 24 // 68
另外我的代码没有用标点符号计算句子长度,但我想我可以添加 1.
编辑:
限制:70 输出:“Lorem ipsum dolor sat amet,consectetur adipiscing elit!”
限制:40 输出:“Lorem ipsum dolor sat amet, consectet...”
限制:220 输出:“Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua?”
限制:240 输出:“Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua?Ut enim ad minim veniam,quis nostrud exeritation ullamcolaboris nisi ut eaquatse commod.”
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |