【译】JS基础算法脚本:字符串截取及三种字符截取法的差异

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值