说说 javascript 字符截取的三个办法
- String.prototype.substr
- String.prototype.substring
- String.prototype.slice
这三个办法平时都在用,只是有时不晓得用哪个更好,明天就来看看他们的异同
这3个办法都承受2个可选参数。
第1种状况:都不传参
var string = "hello";string.substr();> hellostring.substring();> hellostring.slice();> hello
从下面代码能够看出,如果不传参3个办法没有什么区别,当然工作中不可能这样用,这里只是为什么测试它们的行为
第2种状况:都传一个参数 0
var string = "hello";string.substr(0);> hellostring.substring(0);> hellostring.slice(0);> hello
输入跟第一种状况一样,上面咱们试一下第三种状况,传个2
第3种状况:都传一个参数 2
var string = "hello";string.substr(2);> llostring.substring(2);> llostring.slice(2);> llo
3个办法输入依然雷同,当初咱们晓得了,第一次参数的作用是示意从第几个位开始(蕴含以后地位),下面三种状况输入逻辑都一样,为什么要有3个行为统一的办法?先不要焦急,下面说了,还能够传第二个参数,上面咱们试试
第4种状况:都传两个参数
var string = "hello";string.substr(2, 1);> lstring.substring(2, 1);> estring.slice(2, 1);> ''
开始产生差别了,上例substr和sbustring都有输入,只有slice输入了字符串。
由此咱们晓得第二个参数的作用,substr的第二个参数示意个数,其余两个还是示意地位,substring把两个参数进行了调换,返回了“e”, slicet起点小于终点,所有输入为空。
下面的例子参数都是自然数,上面咱们试试正数会怎么样
第5种状况:第一个参数为正数
var string = "hello";string.substr(-1);> ostring.substring(-1);> hellostring.slice(2, -1);> o
这次差异更大了,substr 和 slice 为什么返回最初一个字母?依据<<javascript 高级程序设计>>阐明,这两个办法在第一个参数为正数时,会把字符串长度加上这个参数,即 5 + -1 = 4, 所以输入了字母 "o", 而substring 会第一个负参数当0解决,所以输入了“hello”,接下来咱们试试在第一个参数为正数,别离传入第二个参数为自然数和正数,看看返回值
var string = "hello";string.substr(-1, 1); // 前面的参数示意个数> ostring.substr(-1, -1); // 如果第二个参数为正数会转成0 即 string.substr(4, 0);> ""string.substring(-1,1); // 相当于 string.substring(0, 1)> hstring.substring(-1,-1); // 会把所有正数转成0, 即 string.substring(0,0)> ""string.slice(-1, -1); // 将所有正数参数加上字符串长度 即 string.slice(4,4)> ""
最初留神一下它们的不同之处
- substr 第一个参数为个数, 其余两个办法为地位下标
- substring 在参数为正数时,通通转成0, substr只把第二个参数转成0
- substring 在第一个大于第二个参数时,会隐式调换参数地位 substring(3,1) => substring(1,3)