当前位置: 首页 > Web前端 > JavaScript

字符串截取的三种方法

时间:2023-03-27 00:57:35 JavaScript

说说javascript字符截取的三种方法String.prototype.substrString.prototype.substringString.prototype.slice通常会用到这三种方法,但是有时候不知道哪个更好。今天就让我们一起来看看它们的异同吧。这3个方法都接受2个可选参数。情况一:没有传递参数varstring="hello";string.substr();>hellostring.substring();>hellostring.slice();>hello从上面的代码来看,如果没有传递参数3就没有两种方法的区别。当然,在工作中不可能使用这种方式。这就是为什么要测试他们的行为。第二种情况:都传一个参数0varstring="hello";string.substr(0);>hellostring.substring(0);>hellostring.slice(0);>hello输出和第一种情况一样,让我们试试第三种情况,传2。第三种情况:都传一个参数2varstring="hello";string。substr(2);>llostring.substring(2);>llostring.slice(2);>llo3方法输出还是一样,现在我们知道第一个参数的作用是表示开始的位数(包括Currentlocation),以上三种情况的输出逻辑是一样的,为什么要有行为一致的三种方法呢?别着急,上面说了,也可以传第二个参数,我们来试试第四种情况:传两个参数varstring="hello";string.substr(2,1);>lstring.substring(2,1);>estring.slice(2,1);>''开始产生差异。上面的例子中,substr和sbusstring都有输出,只有slice有输出string。由此我们知道了第二个参数的作用。substr的第二个参数表示个数,另外两个仍然表示位置。Substring交换两个参数并返回“e”。切片的终点比起点小,所有输出为空。上例中的参数都是自然数。让我们试试负数会发生什么。情况5:第一个参数为负数varstring="hello";string.substr(-1);>ostring.substring(-1);>hellostring.slice(2,-1);>o差异较大这一次,为什么substr和slice返回最后一个字母?根据<>,当这两个方法的第一个参数为负数时,都会将字符串的长度加到这个参数上,即5+-1=4,所以字母“o”为output,而substring会把第一个负参数当成0,所以输出“hello”。接下来我们尝试在第一个参数为负数时,将第二个参数传入一个自然数和一个负数,看返回值varstring="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第一个参数是数字,另外两个方法是位置下标。当参数为负数时,全部转为0。substr只将第二个参数转为0。当一个大于第二个参数时,会隐式交换参数位置substring(3,1)=>substring(1,3)