js中的字符串操作方法

本文详细介绍了JavaScript中的字符串操作方法concat(), slice(), substr() 和 substring()。concat()用于字符串拼接,而slice(), substr() 和 substring()则用于从字符串中提取子串。文章还对比了这些方法在不同参数设置下的表现。

一、concat

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()是专门用来拼接字符串的方法,但实践中使用更多的还是加号操作符(+)。而且,使用加号操作符在大多数情况下都比使用concat()方法要简便易行(特别是在拼接多个字符串的情况下)。

 二、slice、substr和substring

 ECMAScript 提供了三个基于子字符串创建新字符串的方法:slice()substr()substring()。这三个方法都会返回被操作字符串的一个子字符串,而且也都接受一或两个参数。第一个参数指定子字符串的开始位置,第二个参数(在指定的情况下)表示子字符串到哪里结束。具体来说,slice()substring()的第二个参数指定的是子字符串最后一个字符后面的位置。而substr()的第二个参数指定的则是返回的字符个数。如果没有给这些方法传递第二个参数,则将字符串的末尾作为结束位置。与concat()方法一样,slice()substr()substring()也不会修改字符串本身的值——它们只是返回一个基本类型的字符串值,对原始字符串没有任何影响。请看下面的例子。

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"

 这个例子比较了以相同方式调用slice()substr()substring()得到的结果,而且多数情况下的结果是相同的。在只指定一个参数3的情况下,这三个方法都返回"lo world",因为"hello"中的第二个"l"处于位置3。而在指定两个参数3和7的情况下,slice()substring()返回"lo w""world"中的"o"处于位置7,因此结果中不包含"o"),但substr()返回"lo worl",因为它的第二个参数指定的是要返回的字符个数。

在传递给这些方法的参数是负值的情况下,它们的行为就不尽相同了。其中,slice()方法会将传入的负值与字符串的长度相加,substr()方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0。最后,substring()方法会把所有负值参数都转换为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()方法会把第二个参数转换为7,这就相当于调用了slice(3,7),因此返回"lo w"substring()方法会把第二个参数转换为0,使调用变成了substring(3,0),而由于这个方法会将较小的数作为开始位置,将较大的数作为结束位置,因此最终相当于调用了substring(0,3)substr()也会将第二个参数转换为0,这也就意味着返回包含零个字符的字符串,也就是一个空字符串。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望星空的代码

创作不易,您的支持是我的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值