js substr 和 substring

不知道为什么,每次需要用到截取字符串的函数时,总是分不清 substrsubstring 的区别。但话说回来,这两个确实很像啊。js 为什么会有这两个如此“貌似” 的东西呢?

substr(start, [length])

截取从指定下标 start 开始,长度为 length 的字符串。

如果 start 是负数,则从字符串尾部开始计数,比如-1表示从倒数第一个开始。如果这个负数的绝对值大于字符串长度,那么会认为是 0。

如果length 是0或者负数,则会返回一个空字符串,如果省略 length,则会截取从start到结尾。

 

substring(start, [stop])

截取从下标start到stop(不包括stop位置的字符)的字符串。

如果省略stop,则截取到结尾。start和stop必须为非负整数,也就是 0,1,2 …

如果start大于stop,js会自动交换它们,然后计算。

如果start等于stop,则返回空字符串。

 

基本的规则就是这样,这是语法范畴的东西,很细很繁琐,也不好区分。实际上使用substr的情景可能是下面这样的。

  • 取一大段文字的前几个字,形成缩略信息。
  • 获取身份证,银行卡,电话号码等私密信息的首部和尾部,然后和 * 组装,然后公开展示。

substring可能是这样:

  • 获取uri的最后一段
  • 获取email地址@后面一段

常常要搭配 indexOf 一起使用。

 

更多细节可以参考 MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

posted @ 2016-06-02 11:38  六月的海  阅读(1083)  评论(0编辑  收藏  举报