,,详解JS截取字符串的三个方法substring,substr,slice

,,详解JS截取字符串的三个方法substring,substr,slice

js中拦截字符有三种方法,分别是substring()、substr()和slice()。通常情况下,我们可能都在使用它们,但我们总是对这些方法感到有点困惑。本文将详细介绍三者的区别,有需要的可以参考。

目录

异同子串语法参数描述子串语法参数描述切片语法参数描述总结一下,js中拦截字符的方法有三种,分别是substring()、substr()和slice()。我们平时可能都会用到,但是对于这些方法,尤其是substring()和substr(),总是会有一点困惑。甚至方法的名称也相似。以下是细节。

相同点

这三种方法都可以截取字符串,并返回一个新的字符串,即原字符串不会被修改。

此处显示控制台输入和控制台输出,同下:

//chrome控制台

var a='0123456789 '

不明确的

a.substr(1,5)

'12345'

a

0123456789' //没有变化。

不同点

三种方法的区别在于参数不同。

substring

substring()方法用于提取字符串中两个指定下标之间的字符。

语法

string.substring(开始,停止)

参数

参数描述开始是必需的。一个非负整数,指定要在字符串中提取的子字符串的第一个字符的位置。停止是可选的。一个非负整数,比字符串中要提取的子字符串的最后一个字符的位置大1。如果省略此参数,返回的子字符串将一直到字符串的末尾。

说明

1.substring()方法返回的子字符串包括起始字符,但不包括终止字符。

//chrome控制台

var a='0123456789 '

不明确的

a.substring(1,5)

'1234'

2.如果参数start和stop相等,则该方法返回一个空字符串(即长度为0的字符串)。

//chrome控制台

var a='0123456789 '

不明确的

a.substring(1,1)

''

3.如果start大于stop,那么这个方法将在提取substring之前交换这两个参数。

//chrome控制台

var a='0123456789 '

不明确的

a.substring(5,1)

//=a.substring(1,5)

'1234'

4.如果start和stop为负数,该参数将自动变为0,然后继续上述规则。

//chrome控制台

var a='0123456789 '

不明确的

a.substring(5,-1)

//=a.substring(5,0)

//=a.substring(0,5)

'1234'

5.如果start和stop有正小数(负数直接到第4条),那么这个参数就向下取整,然后继续上面的规则。

//chrome控制台

var a='0123456789 '

不明确的

a.substring(5,2.5)

//=a.substring(5,2)

//=a.substring(2,5)

'234'

6.如果start和stop有字符串,那么parse()将首先完成。如果转换结果是NaN,那么它将被转换为0。其余情况将继续上述规则。

//chrome控制台

var a='0123456789 '

不明确的

a.substring(5,“2.5”)

//=a.substring(5,2)

//=a.substring(2,5)

'234'

a.substring(5,' ss ')

//=a.substring(5,NaN)

//=a.substring(5,0)

//=a.substring(0,5)

'01234'

其他情况不一一测试。当然,一般情况下,尽量不要这么做。毕竟语法已经规定了是整数。

substr

substr()方法可以从起始下标开始的字符串中提取指定数量的字符。

语法

string.substr(开始,长度)

参数

参数描述开始是必需的。要提取的子字符串的起始下标。必须是数值。如果为负,则此参数声明从字符串末尾开始的位置。也就是说,-1表示字符串中的最后一个字符,-2表示倒数第二个字符,依此类推。长度可选。子字符串中的字符数。必须是数值。如果省略此参数,则返回从字符串开头到结尾的字符串。

说明

这个方法和substring()最大的区别在于,第二个参数是你需要截取字符串的长度,而不是位置。

1.substr()方法返回的1.substring从开始(包括)的字符开始截取长度,如果超过了结尾,则在结尾结束。

//chrome控制台

var a='0123456789 '

不明确的

a.substr(1,5)

'12345'

a.substr(1,15)

//只会走到最后,再多也没用

'123456789'

2.start可以取负值,表示数字从字符串的末尾开始到开头(从右到左,注意是从1开始,比如-1指的是字符串中的最后一个字符),但是截取长度还是从左到右,如果超过了末尾,就在末尾结束。

//chrome控制台

var a='0123456789 '

不明确的

a.substr(-4,2)

//-4表示从右边数第4个,即“6”,然后取一个2长度的字符串,即“67”

'67'

3.如果长度为负,将直接被视为0,最终将返回' '。

//chrome控制台

var a='0123456789 '

不明确的

a.substr(4,-2)

//=a.substr(4,0)

''

4.如果start或length是小数,小数部分将被截断。

//chrome控制台

var a='0123456789 '

不明确的

a.substr(1.2,5.2)

//=a.substr(1,5)

'12345'

5.如果start和length有字符串,那么parse()将首先完成。如果转换结果是NaN,那么它将被转换为0。其余情况将继续上述规则。

//chrome控制台

var a='0123456789 '

不明确的

a.substr('aa ',' 5 ')

//=a.substr(0,5)

'01234'

slice

slice()方法可以提取字符串的一部分,并将提取的部分作为新字符串返回。

语法

string.slice(开始,结束)

参数

描述参数start必须是。要提取的片段的起始下标。如果为负,此参数指定从字符串末尾开始的位置。也就是说,-1表示字符串的最后一个字符,-2表示倒数第二个字符,依此类推。End可选。紧跟在要提取的段末尾的下标。如果未指定此参数,则要提取的子字符串包括从原始字符串的开头到结尾的字符串。如果此参数为负,则指定从字符串末尾开始的位置。

说明

这种方法的两个参数是位置坐标,类似于减法。不同的是,这个方法支持负数,不交换位置。它总是从开始到结束。如果此间隔不存在,它将返回“”。

1.1.slice()方法返回的子字符串包含开头的字符,但不包含结尾的字符。

//chrome控制台

var a='0123456789 '

不明确的

a.slice(1,5)

'1234'

2.当start或end为负数时,定位模式和substr为1,从右向左计数,从1开始。

//chrome控制台

var a='0123456789 '

不明确的

a.slice(1,-1)

//从右向左,起点从第1个(含)开始,终点从第1个(不含)开始。

'12345678'

3.从开始到结束的顺序总是从左到右。如果最后一个开始的位置在end的右边,则返回“”。

//chrome控制台

var a='0123456789 '

不明确的

a.slice(2,1)

//2的位置是“2”,1的位置是“1”。从2=1,方向相反,归空。

''

切片(-2,1)

//-2的位置是‘8’,1的位置是‘1’。从8=1,方向相反,回程空。

''

切片(-2,-1)

//-2位于‘8’,而-1位于‘9’。从8=9,方向正常,回到' 8 '

'8'

4.其他情况与substring的处理相同。

//chrome控制台

var a='0123456789 '

不明确的

a.slice('xx ',' 5.5 ')

//=a.slice(0,5)

'01234'

总结一下

从上面的测试得出结论,substring不支持负值,另外两个方法都支持负数,从右边第一个数字开始计数。

substr的第二个参数是长度,这是和其他两个方法最大的区别。

切片是有方向的,总是从开始=结束到左=右。

以上结论都是在最新的谷歌浏览器上测试的,IE和火狐没有测试。

关于解释JS拦截字符串的三种方法:substring、substr、slice和slice,本文就讲到这里。关于JS拦截字符串的更多信息,请搜索我们以前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: