Javascript 使用 3 个参数进行切片

Javascript slicing with 3 parameters

我正在尝试对我的文本进行切片,如果文本的字符长度超过给定值,则文本应该从 0 切片到该值 + 直到找到下一个点为止,所以我们避免在句子中间切分文本。

我尝试了以下

function shorten(text, num)
{
var fulltext=text.toString();
var firstdot = fulltext.indexOf("."); 
if (fulltext.length < num)
{
    return fulltext;
}
else
{
    return fulltext.slice(0, (num + fulltext.indexOf(".")));
}


}

所以逻辑是,如果文本低于给定值,则全文 returned,如果不是,我想切片文本,但也包括文本,直到下一个点。 因此,一旦达到 num 值(以字符为单位),它应该继续搜索,直到找到下一个点,然后停止。

我想要给出的例子让我们说 10 作为 num 值。 "您好,这是一个测试示例,这部分应该被删除。"

应该return:“你好。这是一个测试例子。”但它会 return "Hello.This"

请像这样更改一些代码

function shorten(text, num)
{
    const fulltext=text.toString();
    const firstdot = fulltext.indexOf(".", num);
    return fulltext.length < num ? fulltext : fulltext.slice(0, firstdot + 1);
}

console.log(shorten("Hello. This is a test example. This part should be removed.", 10));

var str = "Hello. This is a test example. This part should be removed."
function shorten(text,num){
    let dot = text.indexOf(".",num),
        end = dot>=0?dot+1:num
    return text.slice(0,end)
}
console.log(shorten(str,6))

一些定义

让我们说限制 num = 10

indexOf(".",num) 因为我在不关心点的情况下取了 10 个字母,所以我开始检查 10 个字母后的 .,这就是第二个参数在这里所做的

dot>=0?dot+1:num 这是一个简写,它检查 dot 是否大于或等于 0 如果它为真则 return 点的值否则 return num

(dot+1) +1 用于在没有此结果的切片时取最后一个点