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

时间:2015-05-01 15:49:11

标签: javascript string truncate

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)

我需要让代码返回&#39; A-tisket ...&#39;如果字符串的长度比我的num参数长。当我运行此代码时,它会切换到A-tisket a - &#39;,如何删除&#34;一 - &#34;当字符串的长度超过我的num参数时,将句点添加到结尾?我尝试在.split()之后使用.replace()方法,但无法找到替换它的方法。

3 个答案:

答案 0 :(得分:2)

确定!好消息是,你基本上已经拥有它了。

如果您想要将...添加到最后,您就可以了解它 - 只需将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"

答案 1 :(得分:1)

只需剪掉更多字符(为句号腾出空间),然后将句点添加到返回值字符串中。

我还建议你在你的情况下使用<=,否则你最终会在不需要时加点。

最后,为了获得完全的弹性,您需要确保不要通过切片来解决问题。负长度...

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

答案 2 :(得分:0)

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

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