如果字符串比给定参数长,则在字符串末尾添加句点

add periods to the end of string if it's longer than given argument

function truncate(str, num) {
  if(str.length < num) {
    return str;
  }
  else {
    str = str.slice(0, num);
    return str;
  }

}
truncate('A-tisket a-tasket A green and yellow basket', 11);
//truncate('A-tisket a-tasket A green and yellow basket', 'A-tisket a-tasket  
  A green and yellow basket'.length)
//truncate('A-tisket a-tasket A green and yellow basket', 
 'A-tisket a-tasket A green and yellow basket'.length + 2)

如果字符串的长度比我的 num 参数长,我需要代码 return 'A-tisket...'。当我 运行 这段代码时,它会切片到 'A-tisket a-',当字符串的长度比我的 num 参数长时,我如何删除“a-”并在末尾添加句点?我尝试在 .split() 之后使用 .replace() 方法,但无法找到替换它的方法。

只需在末尾增加 trim 个字符(为句点腾出空间),然后将句点添加到 return 值字符串。

我还建议您根据自己的情况使用 <=,否则您最终会在不需要时添加点。

最后,为了完全恢复,您需要确保不会被 'slicing' 以负长度环绕...

function truncate(str, num) {
    if (str.length <= num) {
        return str;
    } else {
        var append = "...";
        var remove = num - append.length;
        if (remove < 0) {
            remove = 0;
            append = append.slice(0, num);
        }
        str = str.slice(0, remove);
        return str + append;
    }
}

Here is a working example

您可以使用 + 运算符将句点连接到字符串的末尾。

function truncate(str, num) {
  if(str.length < num) {
    return str;
  }
  else {
    str = str.slice(0, num);
    return str + "...";
  }
}

好的!好消息是,您基本上已经拥有它了。

如果你想在末尾添加 ...,你就快搞定了 - 只需将 return str 更改为 return str + "...";

为了确保当 num 等于字符串的长度时我们不添加 ...,我们可以简单地将 < 更改为 <=.

所以这给你:

function truncate(str, num) {
    if(str.length <= num) {
        return str;
    } else {
        str = str.slice(0, num);
        return str + "...";
    }
}

输出:

truncate('A-tisket a-tasket A green and yellow basket', 11);
>>> "A-tisket a-..."

truncate('A-tisket a-tasket A green and yellow basket',
    'A-tisket a-tasket A green and yellow basket'.length);
>>> "A-tisket a-tasket A green and yellow basket"

truncate('A-tisket a-tasket A green and yellow basket',
    'A-tisket a-tasket A green and yellow basket'.length + 2);
>>> "A-tisket a-tasket A green and yellow basket"