string 取最后一位,前端拦截String对象的三种主要方式

不少人都关注前端拦截String对象的三种主要方式和一些string 取最后一位相关的话题,大家都不是很了解,接下来听小编的解吧!


今天我们就来说说String类型提供的三种方便且非常相似的拦截方法。


部分


子串


子串


它们的相似之处体现在两个方面。


功能截取一个字符串并返回一个新字符串。


参数全部支持接受两个参数。第一个参数指示从哪里开始阻塞。除了substr之外,另外两个参数slice和substring表示块的结束位置。


两者都只采用一个参数,并且从开始位置到结束都一致地阻塞。


让str='abcdefg';让sli=strslice2;让sub=strsubstr2;让subs=strsubstring2;上面的代码体现了上面提到的第三个共性。


两者都只接受一个参数,并且将从开始位置截取到结束位置。


也就是说,输出将全部是


啊,这么一看,还真是有几分相似呢!那么区别是什么呢?


自己上传代码--------


//在上面的例子中,添加第二个参数怎么样letstr='abcdefg';letsli=strslice2,5;//'cde'letsub=strsubstr2,5;//'cdefg'letsubs=strsubstring2,5;//'cde'通过上面的代码你可以很容易发现substr的叛逆本质。第二个参数不表示截取的结束位置。相反,该字段的长度被阻止。


那么如果截取的结束位置超过字符串中最后一个位置的索引会发生什么?是否报告任何错误?


好奇心促使我修改了代码。


让str='abcdefg';让sli=strslice2,10;//'cdefg'letsub=strsubstr2,10;//'cdefg'letsubs=strsubstring2,10;//'cdefg'这三个方法非常强大。没有因为我们的不合理请求而发生错误,我们一一记录控制台日志,检查拦截长度是否溢出,5个请求都没有题。


如果起始位置大于字符串长度


让str='12345';让sli=strslice6,8;//''letsub=strsubstr6,2;//''letsubs=strsubstring6,8;//''显然如果初始位置大于strsubstr6,8那么本例中的字符串长度,则截获的是空字符串''


所以这三个方法到达末尾时就停止拦截,并且不在末尾添加任何空格。


以上是两种特殊情况,也有参数为负数的情况。


在这种情况下,三种方法的性能是不同的,因此我们将分别讨论。


1我们先看一下切片。


让str='12345';让sli1=strslice-3,4;//'34'letsli1=strslice3,-1;//'4'letsli1=strslice-3,-1;//'34'isOK可以看到,slice方法将传入的负数与字符串的长度相加,将其转换为正数,例如strslice-3,4与strslice2,4是一样的。


2之后是substr的情况。


让str='12345';让sli1=strsubstr-3,2;//'34'letsli1=strsubstr3,-1;//''让sli1=strsubstr-3,-1;//''substr首先,第一个参数还将任何传入的负数添加到字符串的长度中,并将它们转换为正数。需要注意的是第二个参数;如果它为负数,则截距长度将默认为0。所以最后两个语句都返回空字符串''。


3最后子串的表现


让str='12345';让sli1=strsubstring-3,3;//'123'letsli1=strsubstring3,-1;//'123'letsli1=strsubstring-3,-1;//''在这段代码中,我们注意到两件事。


子字符串将接收到的任何负数转换为0,然后截取它们。


该方法在接收两个参数时,首先比较两个参数的大小,将较小的参数作为阻塞开始位置,将较大的参数作为阻塞结束位置。


特别是,第二个函数slice不会比较两个参数,如果第一个参数大于第二个参数,则直接返回空字符串。


总结


通过分析不同参数下的性能,我们最终对其进行了简单的总结。文章开头总结了相似之处,以下是不同之处


Slice的两个参数分别表示截取的开始和结束,substr的第二个参数表示截取的位数,substring首先比较两个参数的大小后确定截取区域。


一旦所有三个方法都拦截到结束,拦截就会停止,无论约定的结束位置或约定的参数长度如何。


如果参数为负数Slice在字符串长度上添加一个负数,然后对得到的正数执行代码。substr的第一个参数也在字符串的长度上加上一个负数得到正数,第二个参数将负数转换为0。子字符串将所有负参数转换为0。


除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。