String.substr()、String.slice()、String.substring()解析

String.substr()

提取一个子串

概要

string.substr(start,length)

参数

start: 子串的开始位置。如果这个参数是负数,则将从string的尾部开始计算:-1表示最后一个字符,-2表示倒数第二个字符,以此类推

length: 该子串的字符数。如果省略这个参数,则返回的子串将包含从开始位置到字符串结束的所有字符

返回

string的一部分的一个副本,包含string中自start位置开始的length个字符,如果未指定length则包含自start到结尾的所有字符

描述

substr()从string中提取并返回一个子串。它并不修改string本身。

注意,substr()通过一个开始字符的位置以及长度来指定期望取得的子串。这与String.substring()和String.splice()不同并且有时会很有用,后两者是通过指定两个字符的位置来定义一个字串。不过需要注意,这个方法不再是ECMAScript的标准,因此已弃用

示例

var s="abcdefg"
s.substr(2,2);	//返回“cd”
s.substr(3);	//返回“defg”
s.substr(-3,2);	//应该返回“ef”;但在IE4中返回“ab”

BUG

在IE中传入负的start不会正常工作,它们不是从string的尾部开始计算字符位置,而是从位置0开始

String.slice()

提取一个字符串

概要

string.slice(start,end)

参数

start:子串开始的字符串索引。如果为负,则将从该字符串的尾部开始计算。也就是说,-1表示最后一个字符,-2表示倒数第二个字符,以此类推。

end:紧跟着子串结尾的字符串索引。如果不指定,则子串将包括从start到当前字符串结尾的所有字符。如果这个参数是负的,则将从该字符串的尾部开始计算

返回

一个新的字符串,内容为string中自start位置开始并且包含start位置,直到但不包含end位置的所有字符

描述

slice()返回一个字符串,内容为string的一个切片或子串。它不修改string

String的方法slice()、substring()以及弃用的substr()都返回一个字符串的指定部分。slice()比substring()更灵活,因为它允许负参数值。slice()与substr()的不同之处是,前者通过两个字符位置来定义一个子串,而后者使用一个位置和一个长度。

示例

var s="abcdefg";
s.slice(0,4)	//返回“abcd”
s.slice(2,4)	//返回“cd”
s.slice(4)	//返回“efg”
s.slice(3,-1)	//返回“def”
s.slice(3,-2)	//返回“de”
s.slice(-3,-1)	//应该返回“ef”,但在IE4中返回“abcdef”

BUG

IE4中如果start为负数将出现错误(不过之后的IE版本中没有这个问题)。它不是从字符串的尾部开始计算,而是从位置为0的字符开始

String.substring

返回字符串的一个子串

概要

string.substring(from,to)

参数

from:一个非负整数,指定要提取的子串的第一个字符在string中的位置

to:一个非负整数,比要提取的子串的最后一个字符的位置大1.如果省略这个参数,则返回的子串将持续到string的结尾。

返回

一个新的字符串,长度为to-from,内容为string的一个字串。新字符串的内容为string中从位置fromto-1的字符的副本

描述

String.substring()返回string中位置fromto之间的字符组成的子串。包含位置from处的字符,但不包含位置to处的字符。

如果from等于to,则这个方法将返回一个空(长度为0的)字符串。如果fromto大,这个方法将先交换两个参数的值,然后返回它们之间的子串。

子串中包含位置from处的字符,但不包含to处的字符,记住这一点很重要。这看起来有些随意或违反直觉,不过这个体系的一个值得注意的特性是,返回的子串的长度总是等于to-from

注意String.slice()和非标准的String.substr()也能从字符串中提取子串。但和这些方法不同,String.substring()不接受负参数

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值