【问题标题】:add periods to the end of string if it's longer than given argument如果字符串比给定参数长,则在字符串末尾添加句点
【发布时间】:2015-05-01 15:49:10
【问题描述】:
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 参数长,我需要让代码返回 'A-tisket...'。当我运行此代码时,它会分割为“A-tisket a-”,当字符串的长度比我的 num 参数长时,如何删除“a-”并在末尾添加句点?我尝试在 .split() 之后使用 .replace() 方法,但无法找到替换它的方法。

【问题讨论】:

  • else{return str.slice(0,num-3)+'…';}?
  • @Rick Hitchcock 编辑:抱歉,数字长度

标签: javascript string truncate


【解决方案1】:

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

如果您想将... 添加到末尾,您已经完成了 - 只需将 return str 更改为 return str + "...";

为确保在num 等于字符串长度时不添加...,我们可以简单地将&lt; 更改为&lt;=

所以这给了你:

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"

【讨论】:

  • @bhspencer 这只会通过 truncate('A-tisket a-tasket A green and yellow basket', 11)。我还需要另外两个函数参数来传递。
  • @user4852194 好的!示例的第二个参数是什么?
  • truncate('A-tisket a-tasket A 绿色和黄色篮子', 'A-tisket a-tasket A 绿色和黄色篮子'.length) truncate('A-tisket a-tasket A green and yellow basket', 'A-tisket a-tasket A green and yellow basket'.length + 2) 我也需要传递这两个参数
  • @user4852194 好的!更新了我的答案。这就是你要找的东西?
  • 几乎 :( 第一个 truncate 参数需要返回 'A-tisket...' 而第二个 truncate 参数不应该有 '...' 因为 num 参数等于字符串长度。我认为 if 语句需要是 if(str.length
【解决方案2】:

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

我还建议您在您的情况下使用&lt;=,否则您最终会在不需要时添加点。

最后,为了获得完全的弹性,您需要确保您不会通过负长度的“切片”来回绕...

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      相关资源
      最近更新 更多