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