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

truncateString("A-tisket a-tasket A green and yellow basket", 11) should return "A-tisket...".
truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and 
    yellow basket".length) should return "A-tisket a-tasket A green and yellow basket".
truncateString("A-", 1) should return "A...".

思路

  1. 三种情况选择条件语句

  2. 字符串截取选用substr,substring,slice

function truncateString(str, num) {
    if(num < 4) {
      return str.substr(0,num) + "...";
    } else if(num<str.length) {
      return str.substring(0,num-3) + "...";
    }
    return str.slice(0,num+3);
}
truncateString("A-tisket a-tasket A green and yellow basket", 11);

相关

    str.substr(start[, length])
    str.substring(start[, indexEnd])
    str.slice(start[, indexEnd])
  • start为负数时,表示起始索引

    substr:    start => strLength + start
    subsring:  start => 0  (以及strat=NaN时)              
    slice:     start => strLength + start      
    
  • start为正数,且大于str.length时

    substr:    str.substr => 空字符
    subsring:  str.substr => str
    slice:     str.substr => str
  • 第二个参数意义

    substr:   截取长度 (length=0或负值:str.substr => 空字符)
    subsring:  结束索引 (Start > indexEnd,则 substring 的执行效果就像两个参数调换了一样)    
    slice:     结束索引
  • 省略第二个参数,均截取到结尾

  • substring 和 slice 的截切范围均不包含indexEnd

有其他好的方法或思路的道友,不妨在沙发区神交一番。
对文章内容或方法有深刻理解,也请指点一二。


小石头
266 声望15 粉丝