字符串截取常用方法

不改变原字符串

substring()、 slice()、 substr()

  • str.slice(start,end) 从start取起到end结束,不包括end,可以为负数

    start是必选参数,意思是从第start个字符开始截取到末尾。如果是负数,那么它规定从字符串尾部开始算起的位置。也就是说,-1 指最后一个字符,-2 指倒数第二个字符,以此类推。

    end是可选参数,从第start个字符开始截取到第end个字符。如果没有指定该参数,那么截取的字符串包含从 start 到结束的所有字符。如果这个参数是负数,那么它规定的是从数组尾部开始算起的字符。

    1
    2
    3
    4
    5
    6
    7
    let str = "abcdefg";
    str.slice(3); //"defg"
    str.slice(3,5); //"de"
    str.slice(-2); //"fg"
    str.slice(2,-2); //"cde"
    str.slice(-4,-2); //"de"
    str.slice(-1,-2); //""
  • str.substring(start, end) 从start取起到end结束,不包括end,为非负整数

    start是必选参数,必须是非负的整数。意思是从第start个字符开始截取到末尾。
    end是可选参数,非负的整数。

    1
    2
    3
    4
    let str = "abcdefg";
    str.substring(3); //"defg"
    str.substring(3,5); // "de"
    str.substring(5,3); // "de" 如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
  • str.substr(start,length) 从start取起取length位,可以为负数(少使用)

    start:必需,要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推
    length:可选,在返回的子字符串中应包括的字符个数。

    1
    2
    3
    4
    let str = "abcdefg";
    str.substr(3); //"defg"
    str.substring(3,5); // "defg"
    str.substring(3,2); // "de"