Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按句子截断文本拆分_Javascript_Typescript_Reduce - Fatal编程技术网

Javascript 按句子截断文本拆分

Javascript 按句子截断文本拆分,javascript,typescript,reduce,Javascript,Typescript,Reduce,我想用句子截断文本 示例文字:“Lorem ipsum dolor sit amet,Concertetur Adipsicing Elite!”!然而,老街上的汽车,在这座城市里,它是一辆豪华轿车。在tempus enim rhoncus拍卖行拍卖的Pat nunc vitae urna拍卖行。arcu mattis Comodo的Morbi ac tortor?ornare arcu的Morbi,sagittis scelerisque risus。埃涅·洛博蒂斯·拉西尼亚·尼塞尔,nec

我想用句子截断文本

示例文字:“Lorem ipsum dolor sit amet,Concertetur Adipsicing Elite!”!然而,老街上的汽车,在这座城市里,它是一辆豪华轿车。在tempus enim rhoncus拍卖行拍卖的Pat nunc vitae urna拍卖行。arcu mattis Comodo的Morbi ac tortor?ornare arcu的Morbi,sagittis scelerisque risus。埃涅·洛博蒂斯·拉西尼亚·尼塞尔,nec laoreet ipsum viverra ac.Praesent venenatis eleifend risus and pulvinar。这是我的生命,这是我的心愿。无便利。”

这就是我到目前为止的情况:

const truncate=(文本:字符串,限制:数字)=>{
const reduced=文本
.split(/[?!\.]/)
.减少((acc,cur)=>{
acc=(acc+cur).lengthlimit?reduced.slice(limit-3)+’…':reduced;
};
log(truncate(text,300));
问题是它总是用点来代替以前的标点符号,有时它甚至在末尾加点

这里有几个例子:

限额:50

1句话的长度是24//24


2句子长度为20//44编辑:这个怎么样

const字符串=“Lorem ipsum Door sit amet,一位杰出的献身者,他是不是暂时性地参与了劳动和生活?但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除了偶尔不轻率的行为外,还必须为自己的行为负责。”
常量截断=(文本,限制)=>{
让简化=文本
.match(/[^\.!\?]+[\.!\?]+/g)
.减少((acc,cur)=>{
acc=(acc+cur)。长度<极限?acc+cur:acc;
返回acc;
});
如果(text.match(/[^\.!\?]+[\.!\?]+/g)[0]。长度>限制)减少=减少。切片(0,限制-3)+“…”;
回报减少;
};

console.log(truncate(string,240));
如果我理解正确,您希望按实际单词分割文本。也许这个片段会有所帮助

let string=“Lorem ipsum door sat amet,尊敬的精英们,你认为临时劳工和大财团是什么?但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,还必须因疏忽而承担劳动责任。”;
让截断=(文本,限制)=>{
让简化=文本
.split(/[\s]/);
返回(reduced.length>limit?reduced.slice(0,limit-3).join(“”):reduced.join(“”))+“…”;
};
log(truncate(string,20));
log(truncate(string,30));
log(truncate(string,40));
log(截断(字符串,50));

console.log(截断(字符串,60))这显然不是我想要的。你读了我的帖子或者至少读了我的标题吗?我试着用
70
这个函数来表示
limit
,得到了这样的结果:
smod temporal incidedut ut labore et dolore magna aliqua?…
。如果至少有一句话符合limit,我也不想在结尾加省略号。我编辑了我的问题n并添加了我想在输出中看到的内容抱歉,回复太晚,测试过的代码唯一的问题是,如果文本有“Example text v1.5.2”版本,则会出现中断。您希望输出什么?也许我理解您试图实现的目标。@Antoni编辑了我的问题