在Javascript中截断一个字符串

时间:2016-04-12 10:42:24

标签: javascript

我正在努力完成以下任务:

如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有...结尾的截断字符串。

请注意,将三个点插入末尾会增加字符串长度。

但是,如果给定的最大字符串长度num小于或等于3,则在确定截断的字符串时,添加三个点不会增加字符串长度。

我的代码只有在我的num> 2时才会通过测试,否则会失败。

function truncateString(str, num) {
  // Clear out that junk in your trunk
  var trunString = "";
  if (str.length > num) {
  trunString = str.slice(0, (num -3)) + "...";
    return trunString;
  }
  return str;
}

truncateString("A-", 1);

为此找到了解决方案:

var trunString = "";
  if (str.length > num && num >= 4 ) {
  trunString = str.slice(0, (num - 3)) + "...";
    return trunString;
     }
  else if (str.length > num && num <= 3) {
    trunString = str.slice(0, (num)) + "...";
    return trunString;
  }

3 个答案:

答案 0 :(得分:2)

您可以使用conditional (ternary) operator ?:

function truncateString(str, num) {
    return str.length > num ?
        str.slice(0, num > 3 ? num - 3 : num) + "..." :
        str;
}

console.log(truncateString("Abcdefghijk", 5));
console.log(truncateString("A-", 1));
console.log(truncateString("Alpha", 5));
console.log(truncateString("Beta", 5));
console.log(truncateString("Epsilon", 3));

答案 1 :(得分:0)

function truncateString(str, num) {
  // clear out that junk in your trunk
  var trunString = '';
  if (str.length && str.length > num) {
    trunString = str.slice(0, num - 1) + '&hellip;';
    return trunString;
  }
  return str;
}

truncateString("A-", 1);

P.S。:同时阅读@techfoobar评论,使用&hellip HTML实体将有所帮助......

答案 2 :(得分:-1)

这是我的解决方案,希望能帮到你

   function truncate(str, num) {
      // Clear out that junk in your trunk
      var newStr;
      if(num>3&&num<str.length){
        newStr=str.slice(0,num-3)+"...";
      }else if(num>=str.length){
        newStr=str;
      }else{
        newStr=str.slice(0,num)+"...";
      }
      return newStr;
    }

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