不知道为什么,每次需要用到截取字符串的函数时,总是分不清 substr 和 substring 的区别。但话说回来,这两个确实很像啊。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
时间: 2024-10-09 21:40:55