在上一篇文章《js字符串學(xué)習(xí)之計(jì)算給定字符的全部出現(xiàn)位置》中,我們介紹了使用indexOf()和lastIndexOf()函數(shù)結(jié)合while循環(huán),獲取給定子串在字符串中全部位置的方法。那么今天將繼續(xù)給大家?guī)鞪avaScript字符串學(xué)習(xí)系列~
本文將給大家介紹一下JavaScript截取字符串,獲取指定位置間所有字符(即子串)的兩種方法。
首先我們來看看第一種方法–使用slice()
舉個(gè)栗子~
var str="Hello world!"; var n=str.slice(1,7); console.log("原字符串:"+str); console.log("截取下標(biāo)1~7之間的子串:"+n);
我們來看看輸出結(jié)果:
因?yàn)樽址聵?biāo)是從0開始的,所以使用str.slice(1,7)
截取下標(biāo)1~7之間的字符,返回的子串是“ello w
”。
我們來了解一下slice()函數(shù)
string.slice(start,end)
方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分;該函數(shù)接受一個(gè)必需參數(shù)start和一個(gè)可省略的參數(shù)end。
-
start參數(shù):表示起始下標(biāo);第一個(gè)字符位置為 0。如果為負(fù)數(shù),則從尾部開始截取。
-
end參數(shù):表示結(jié)束下標(biāo)。如果沒有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素;如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開始算起的元素。
var str="Hello world!"; var n=str.slice(1,-7); console.log("原字符串:"+str); console.log("截取到的子串:"+n);
輸出結(jié)果:
接下來我們來看看第二種方法–使用substring() 方法
舉個(gè)栗子~
var str="Hello world!"; var n=str.substring(1,7); console.log("原字符串:"+str); console.log("截取到的子串:"+n);
輸出結(jié)果:
substring()方法可以提取字符串中介于兩個(gè)指定下標(biāo)之間的字符。我們使用str.substring(1,7)截取字符串str下標(biāo)1~7之間的字符,因此返回的子串是“ello w”。
我們來了解一下substring()函數(shù)。
string.substring(from, to)
方法可接受一個(gè)必需參數(shù)from(非負(fù)的整數(shù),指定開始下標(biāo)),一個(gè)可省略的參數(shù)to(指定結(jié)束下標(biāo))。substring() 方法返回的子串包括 開始 處的字符,但不包括 結(jié)束 處的字符。
slice()和substring()的區(qū)別:
slice()和substring()都可根據(jù)指定的起止下標(biāo)位置來截取字符串,都可以包含兩個(gè)參數(shù),第一個(gè)參數(shù)表示起始下標(biāo),第二個(gè)參數(shù)表示結(jié)束下標(biāo)。
但如果第一個(gè)參數(shù)值比第二個(gè)參數(shù)值大,substring() 方法能夠在執(zhí)行截取之前先交換兩個(gè)參數(shù),而對(duì)于 slice() 方法來說,則被無視為無效,并返回空字符串。
var str="Hello world!"; var n1=str.substring(7,1); var n2=str.slice(7,1); console.log("原字符串:"+str); console.log("截取到的子串:"+n1); console.log("截取到的子串:"+n2);
輸出結(jié)果:
如果參數(shù)值為負(fù)值,slice() 方法能夠把負(fù)號(hào)解釋為從右側(cè)開始定位;而 substring() 方法會(huì)視其為無效。
var str="Hello world!"; var n1=str.substring(1,-7); var n2=str.slice(1,-7); console.log("原字符串:"+str); console.log("截取到的子串:"+n1); console.log("截取到的子串:"+n2);
輸出結(jié)果:
好了,就說到這里了,有需要的可以看:javascript高級(jí)教程