//写这个是为了加深对substring和slice的理解
substring的任何一个参数小于0,都会被替换成0.两个参数,最小值会被当做start,最大值当做end.
substring和slice的区别:
slice中的start如果为负数,会从尾部算起,-1表示倒数第一个,-2表示倒数第2个,此时end必须为负数,并且是大于start的负数,否则返回空字符串
slice的end如果为负数,同样从尾部算起,如果其绝对值超过原字符串长度或者为0,返回空字符串
substring会取start和end中较小的值为start,二者相等返回空字符串,任何一个参数为负数被替换为0(即该值会成为start参数)
而substr比较特殊
substr的end参数表示,要截取的长度,若该参数为负数或0,都将返回空字符串
var str = "hello"; var start = 2; var end = 1; //substring的参数最小为0 start = Math.max(start,0); end = Math.max(end,0); //substring的参数是可以随意挪位,所以要稍微排序 var max = Math.max(start,end); var min = Math.min(start,end); console.debug(str.substring(start,end)); console.debug(str.slice(min,max)); console.debug(str.substr(min,max - min));
三者的区别参考自:
http://www.cnblogs.com/langu/p/3518605.html
如何使用slice,substr代替substring(原创)
原文:http://www.cnblogs.com/geilishu/p/5009450.html