字符串操作方法concat(),slice(),substr(),substring()之间的区别

介绍几个与操作字符串有关的方法:
第一个是concat(),用于将一个或多个字符串拼接起来,它返回的是得到的拼接的新的字符串。看一个简单地栗子:

var stringValue = "hello ";
var result = stringValue.concat("world");
alert(result);//"hello world"
alert(stringValue);//"hello"

在这个栗子中,通过stringValue调用concat()方法返回的是结果是”hello world”——但stringValue的值保持不变。实际上,concat()方法可以接受任意多个参数的,也就是说可以通过他拼接任意多个字符串,比如:

var stringValue = "hello ";
var result = stringValue.concat("world","!");
alert(result);//"hello world!"
alert(stringValue);//"hello"

在这个例子中,是把”world”和”!”拼接到了”hello”的末尾,虽然concat()方法是专门用来拼接字符串的,但是在平常的开发过程中用的最多的还是用加号操作符”+”来进行拼接,而且大多数情况下,使用”+”要比使用cancat()方法要简单方便的多,特别是拼接多个字符串的时候。
另外还有三个操作字符串的的方法:slice(),substr()和substring()。这三个方法都会返回被操作字符串的一个子字符串。而且也都接受一个或者两个参数。第一个参数指定字符串的开始位置,第二个参数(在指定的情况下)表示要到哪里结束。具体的来说呢就是,slice()和substring()的第二个参数指定的是子字符串的最后一个字符的后面的一个位置。而substr()的第二个参数值的是返回的字符个数(这一点是和前两种方法相差较大的。如果不给这些方法传入第二个参数,则这三个方法都将以字符串的结尾处作为结束位置。同时,这三个方法也和concat()方法一样,不会对原始的字符串有影响,即原来字符串的值不变。可能说这些不太明白,看栗子的话好理解一些:

var stringValue = "hello world";
alert(stringValue.slice(3));//"lo world"
alert(stringValue.substring(3));//"lo world"
alert(stringValue.substr(3));//"lo world"
alert(stringValue.slice(3,7));//"lo w"
alert(stringValue.substring(3,7));//"lo w"
alert(stringValue.substr(3,7));//"lo worl"

这个栗子看起来就非常好理解了,在传入一个参数的情况下,三种方法返回的结果是相同的,结果是”lo world”,因为”hello”中的第二个”l”的位置是3。而在传入两个参数的情况下,slice()和sunstring()方法都返回的是”lo w”(因为”world”中的”o”处于位置7,因此不包含”o”)但是substr()返回的则是”lo worl”,因为他的第二个参数是返回的字符的个数(空格也算)。
如果传递给参数是负数呢?结果将是尽不相同,slice()方法会将传入的负值与字符串的长度相加,substring()会将所有的负值参数装换为0,而substr()方法则将负的第一个参数加上字符串的长度,而将第二个参数转换为0,栗子:

var stringValue = "hello world";
alert(stringValue.slice(-3));//"rld"
alert(stringValue.substring(-3));//"hello world"
alert(stringValue.substr(-3));//"rld"
alert(stringValue.slice(3,-4));//"lo w"
alert(stringValue.substring(3,-4));//"hel"
alert(stringValue.substr(3,-4));//""(空字符串)

在给slice()和substr()传递一个负值的参数时,他们两个返回的结果是一样的,因为-3倍=被转成了8(字符串的长度是11,加-3),那么实际上就相当于调用了slice(8)和substring(8),但是substring()则返回的整个字符差,因为-3被转成了0。
如果第二个参数是负值,如栗子中的所示-4,则slice()会把第二个参数转换为7,相当于slice(3,7),因此返回的是”lo w”;substring()方法会把第二个参数转换为0,相当于substring(3,0),而substring()这个方法会把两个参数中较小的那个作为开始位置,较大的参数作为结束位置,因此最终相当于是调用了substring(0,3);而substr()也会将第二个参数转换为0,这就意味着返回的是包含零个字符的字符串,当然也就是一个空的字符串了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值