JavaScript--substring 和 substr 方法手记
1. substring 方法
作用: 提取调用这个方法的字符串的指定位置的字符, 不对原字符串操作, 提取结果返回为新字符串.
格式: string.substring(start, stop)
参数:
start: 表示从该字符串中的哪个下标开始提取, 提取到的字符包括原字符串中处于这个下标的字符.
stop: 表示提取到哪个下标为止(不包括原字符串中所处这个下标的字符, 切记和 start 相反).
当参数只有一个且为正数时, 会截取从这个下标开始(包括处于这个下标的字符)一直到原字符串的最后一个字符(从左到右).
当参数为两个正数, 且 start < stop, 会截取处于这俩下标之间的字符, 当然包含 'start' 不包含 'stop'.
-------------------------------------------------------------------------------------
以下的情况参数都是负数, 但提取的字符串是一样的, 可理解为该参数被当做 0 后做的处理.
-------------------------------------------------------------------------------------
知道两个参数为负时会转为 0 , 那么当 start 和 stop 都为正, stop < start 时是什么情况呢?
有人将这种情况理解为 当 stop < start, 此方法会在提取字符之前将两个参数调换位置.
-------------------------------------------------------------------------------------
2. substr 方法
作用: 在提取调用这个方法的字符串中, 提取从某个下标开始(从左到右)限定长度的字符串, 不对原字符串操作, 返回提取到的字符串.
格式: string.substr(start, length);
参数:
start: 和 substring 中的 start 类似, 表示从哪个下标的字符开始提取(也包含处于这个下标的字符).
length: 表示要提取的字符串的长度.
-------------------------------------------------------------------------------------
当 start > 0, length 没写时, 会提取包含处于该下标的字符开始到原字符串结尾所有的字符(从左到右数).
即: "qwerasdf".substr(1) ==> werasdf
-------------------------------------------------------------------------------------
当 start < 0, length 没写时, 该方法会将 start 转为正数, 并倒着从右向左地提取以1为最小下标的 |start| 个字符, 说的绕口, 一看便知.
此时的 start 不单单表示起始位置, 还有限定长度的作用, 但参数 length 存在时, 又不一样了.
-------------------------------------------------------------------------------------
"hijklmn".substr(-1, 0) ==> ""
"hijklmn".substr(-1, 2) ==> "n"
"hijklmn".substr(-1, 8) ==> "n" 能看出 length 值长度超过字符串长度会被无视.
"hijklmn".substr(0, 8) ==> "hijklmn"
"hijklmn".substr(1, -3) ==> "" start > 0, length < 0, 此时不会提取到字符, 会返回空字符串.
在此抛砖引玉, 有误导之处还请不吝指点 ^^.