這三個方法都是提取字串裡面子字串的方法,雖然平常使用挺多,但是每次都要去看文檔以防參數傳遞錯誤。下面對這三個方法做一個詳細的差別。
substring
String.substring(x,y):
x:必需。一個非負的整數,規定要提取的子字串的第一個字元在 stringObject 中的位置。
y:可選。一個非負的整數,比要提取的子字串的最後一個字元在 stringObject 中的位置+ 1。
1 2 3 |
|
本文實例講述了JS截取與分割字串的常用方法。分享給大家供大家參考,如下:
JS截取字串可使用substring()或slice()
例子:
1 2 3 |
|
函数:substr()
定义:substr(start,length)表示从start位置开始,截取length长度的字符串。
功能:字符串截取
例子:
1 2 3 |
|
函数:split()
功能:使用一个指定的分隔符把一个字符串分割存储到数组
例子:
1 2 3 |
|
函数:John()
功能:使用您选择的分隔符将一个数组合并为一个字符串
例子:
1 2 3 4 |
|
函数:indexOf()
功能:返回字符串中匹配子串的第一个字符的下标
1 2 3 4 5 |
|
函数:lastIndexOf()
定义:lastIndexOf()方法返回从右向左出现某个字符或字符串的首个字符索引值(与indexOf相反)
功能:返回字符串索引值
1 2 3 4 |
|
补充:substr 和 substring方法的区别
substr 方法
返回一个从指定位置开始的指定长度的子字符串。
stringvar.substr(start [, length ])
参数
stringvar 必选项。要提取子字符串的字符串文字或 String 对象。
start 必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。
length可选项。在返回的子字符串中应包括的字符个数。
说明 如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到 stringvar 的最后。
示例 下面的示例演示了substr 方法的用法。
1 2 3 4 5 6 |
|
substring 方法
返回位于 String 对象中指定位置的子字符串。
strVariable.substring(start, end)
"String Literal".substring(start, end)
参数
start 指明子字符串的起始位置,该索引从 0 开始起算。
end 指明子字符串的结束位置,该索引从 0 开始起算。
说明 substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。
substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。
如果 start 或 end 为 NaN 或者负数,那么将其替换为0。
子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。
示例
下面的示例演示了 substring 方法的用法。
1 2 3 4 5 6 |
|
slice
String.slice(x,y):
x:必需。要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
y:可选。要抽取的片段的结尾的下标+1。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
//2个参数的情况"abcdefg".slice(1,4); //"bcd"//1个参数的情况:返回开始位置到字符串的结尾"abcdefg".slice(1); //"bcdefg"//如果x=y:返回一个空串(即长度为 0 的字符串)"abcdefg".slice(1,1); //""//如果x>y:返回一个空串(即长度为 0 的字符串)"abcdefg".slice(4,1); //""//如果x<0:从字符串的尾部开始算起的位置,-1 指字符串的最后一个字符,-2 指倒数第二个字符//如果y<0:从字符串的尾部开始算起的位置,-1 指字符串的最后一个字符,-2 指倒数第二个字符"abcdefg".slice(-1,8);//g"abcdefg".slice(1,-4); //bc12345678910111213141516
*因为slice不能像substring一样当x
substr
String.substr(x,y):
x:必需。必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
y:可选。子串中的字符长度。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
//2個參數的情況"abcdefg".substr(1,4); //"bcde"//1個參數的情況:返回起始位置到字串的結尾"abcdefg".substr(1) ; //"bcdefg"//如果x<0;從字串的尾部開始算起的位置。 -1 指字串中最後一個字符,-2 指倒數第二個字符,以此類推。 "abcdefg".substr(-1);//g "abcdefg".substr(-1,1);//g123456789
重要事項:ECMAscript 沒有對該方法進行標準化,因此反對使用它。
重要事項:在 IE 4 中,參數 start 的值無效。在這個 BUG 中,start 規定的是第 0 個字元的位置。在之後的版本中,此 BUG 已被修正。 123
總結
三個方法的第一個參數都是開始的位置,substring和slice的第二個參數是結束的位置(不包括該位置), slice和substr可以接受負值但是substr第二個參數是長度。
那麼問題來了,要怎麼取得一個字串的最後一個字元呢?
"abcdefg".substring(length-1);//g "abcdefg".slice(-1);//g "abcdefg".substr(-1);//g"abcdefg". charAt(length-1);//g 1234