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, 此时不会提取到字符, 会返回空字符串.

 

在此抛砖引玉, 有误导之处还请不吝指点 ^^.

原文地址:https://www.cnblogs.com/vlovecode/p/6027409.html