
說完字符串的裁剪,這次來說說字符串的分割。
你可能會有所疑惑,裁剪和分割,這兩者到底有什么區(qū)別呢?
裁剪: 一次裁剪一部分子字符串并返回,可使用
slice()、substring()和substr()方法實現(xiàn)
分割: 一次可將字符串分割成多個子字符串并返回由這些子字符串組成的數(shù)組,可使用split()實現(xiàn)
好,了解了裁剪和分割的區(qū)別之后,我們接下來看看具體如何使用split()方法來實現(xiàn)字符串的分割。
首先,我們先定義一個字符串:
var str = 'Hello World!';
一、只傳一個參數(shù)
1. 傳入非空字符串
console.log(str.split('l')); // [ "He","","o Wor","d!" ]
很簡單,我們把字符“l(fā)”作為分隔符傳入split()方法,最后返回被字符"l"分割成的子字符串組成的數(shù)組。
2. 傳入空字符串
我們也可以將字符串分割成一個個字母組成的數(shù)組,只需給split()傳入空字符串即可。
console.log(str.split('')); // [ "H","e","l","l","o","","W","o","r","l","d","!" ]
3. 傳入正則表達(dá)式
console.log(str.split(/l+/)); // [ "He","o Wor","d!" ]
這個其實就是使用與正則相匹配的子字符串來分割原字符串,而這里匹配到的有兩個:“l(fā)”和“l(fā)l”,所以結(jié)果其實就是使用這兩個字符串來分割。
二、傳入兩個參數(shù)
第一個參數(shù)還是一樣,字符串或正則,而第二個參數(shù)則是一個數(shù)字,用于指定返回數(shù)組的大小。例如:
console.log(str.split('',5)); // [ "H","e","l","l","o" ]
這實際就是在str.split('')的基礎(chǔ)上又截取了輸出數(shù)組的前5項,與下面兩種方式的運行結(jié)果是一樣的:
console.log(str.slice(0,5).split('')); // [ "H","e","l","l","o" ]
console.log(str.split('').slice(0,5)); // [ "H","e","l","l","o" ]
這兩種方式,一個是先裁后分,另一個則是先分后裁,最終結(jié)果都是一樣的。而給split()方法傳入第二個參數(shù)則相當(dāng)于是個簡化版,效果其實是一樣的。
三、逆操作方法
說完了split()的用法,再順便提一提該方法的逆操作方法——join()。
split(): 將字符串分割成數(shù)組
join(): 將數(shù)組合并成字符串
1. 不傳參
console.log(str.split('',5).join()); // "H,e,l,l,o"
默認(rèn)使用逗號來連接數(shù)組的每一項而組成字符串并返回。
2. 傳入空字符串
console.log(str.split('',5).join('')); // "Hello"
直接將數(shù)組中的每一項連接起來組成字符串并返回。
3. 傳入非空字符串
console.log(str.split('',5).join('|')); // "H|e|l|l|o"
使用所傳字符串參數(shù)來連接數(shù)組的每一項而組成字符串并返回。
四、活學(xué)活用
以上說了這么多,其實真正的內(nèi)容沒多少,關(guān)鍵還是應(yīng)該掌握如何在實際工作當(dāng)中去靈活使用。
下面我就隨便舉個簡單的小例子吧~
如何刪除字符串中的某個字符或字符串?
實現(xiàn)這個功能的方法可能有很多,但我個人覺得最簡單方便的就是同時使用split()和join()了。
還是使用最開始的字符串,我們下面將所有的字符 “l(fā)” 刪除。
console.log(str.split('l').join('')); // "Heo Word!"
很簡單,先分割后合并,不再贅述。
事實上,只要對數(shù)組可以實現(xiàn)的功能,在字符串上也能實現(xiàn),只要先使用split()將字符串轉(zhuǎn)換成數(shù)組,使用數(shù)組方法處理過后,再用join()將其轉(zhuǎn)換回字符串即可。
本文重點總結(jié):
① split() 可以傳字符串或正則,也能傳第二參數(shù)
② split() 的逆操作是 join()
③ 字符串和數(shù)組可以自由轉(zhuǎn)換,所以相當(dāng)于它們所具備的很多方法是可以通用的