JavaScript字符串处理:substring, substr, slice





从字符串中提取某一部分是非常容易弄懂的。在Javascript中有三个不同的内置函数可以完成这个操作。正是因为这样,通常初学者很困惑不知道该选哪一个。更糟糕的是,有时很容易就中了圈套而选择一个错误的函数。

字符串的 substring (ECMAScript 5.1 规定 章节15.5.4.15) 是做字符检索的第一个正确选择。这个 substring 函数可以有两个数字做为参数,用来分别指明截取的字符在字符串中的开始和结束(包含结束)位置。另一种情况,如果结束位置的值小于开始位置,函数substring在截取字符时能智能交换开始和结束位置。下面的代码段是一个substring函数的实例:

var a = 'The Three Musketeers';
a.substring(4, 9);     'Three'
a.substring(9, 4);     'Three'

非常多的Javascript环境(包含非常多的现代网页浏览器)也实现了一个不同于 substring 的函数,叫做  substr ( 章节 B.2.3).。但是,  substr 的参数分别是开始字符的位置和截取字符的长度。实例如下:

var b = 'The Three Musketeers';
b.substr(4, 9);     'Three Mus'
b.substr(9, 4);     ' Mus'


当同时使用这两个函数时,情况会非常混乱。很容易弄混它们,从而得到一个错误的结果。函数名也没有一点帮助,substring 和 substr,它们如此的相似。如果不查看文档和规定,就会多一个选择错误的机会。 

还有一些更容易混淆的,字符串对象同样支持 slice (章节 15.5.4.13),和 Array’s slice 很像。总之而言, slice 有一个功能和 substring相同(支持开始和结束位置)。但是,它们有一点不同。如果结束位置小于开始位置, slice 不会交换这两个值。换名话说,它跟随数组的 slice 的处理方式,返回一个空值。

var c = 'The Three Musketeers';
c.slice(4, 9);       'Three'
c.slice(9, 4);       ''

上面三个函数都可以添加两个参数并且基于这些参数值截取字符。但是结果却不同。另外,它和数组方法中的混乱情况很像 (看我先前的文章  JavaScript Array: slice vs splice)

当我们写自己的Javascript库时,我们能忽视这种情况的发生吗?解决方案是去避免API导致这种情况。任何时候一个新的公用函数被引进时,搜索现存的函数中是否有相同功能去避免这种混乱。

预防是最佳的处方,建议弄清楚函数的细节。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您解答这个问题。 在 HTML5 中,截取字符串的方法与 JavaScript 中的截取字符串方法是一致的。常用的截取字符串的方法有 substringsubstrslice。 1. substring 方法 substring 方法可以从字符串中提取指定位置的子字符串。语法如下: str.substring(start, end) 其中,start 和 end 分别是起始位置和结束位置的索引值(包括起始位置,不包括结束位置),如果省略 end 参数,则默认截取到字符串末尾。 例如: var str = "Hello world!"; var result = str.substring(0, 5); // 截取 "Hello" var result2 = str.substring(6); // 截取 "world!" 2. substr 方法 substr 方法可以从字符串中提取指定长度的子字符串。语法如下: str.substr(start, length) 其中,start 是起始位置的索引值,length 是要截取的长度。如果省略 length 参数,则默认截取到字符串末尾。 例如: var str = "Hello world!"; var result = str.substr(0, 5); // 截取 "Hello" var result2 = str.substr(6); // 截取 "world!" 3. slice 方法 slice 方法可以从字符串中提取指定位置的子字符串。语法如下: str.slice(start, end) 其中,start 和 end 分别是起始位置和结束位置的索引值(包括起始位置,不包括结束位置),如果省略 end 参数,则默认截取到字符串末尾。 例如: var str = "Hello world!"; var result = str.slice(0, 5); // 截取 "Hello" var result2 = str.slice(6); // 截取 "world!" 这三种方法都可以截取字符串,但是它们有些细微的差别。substringslice 方法的参数都是以索引值表示位置,而 substr 方法的第二个参数是以长度表示位置。另外,substring 方法不支持负数参数,slice 方法支持负数参数。您可以根据具体的需求选择使用哪种方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值