題目來自freecodecamp上面的一道練習題 在線調試
將字符串轉換為 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 這種形式的,也就是以連字符連接所有小寫單詞。
如果你被卡住了,記得開大招 Read-Search-Ask。嘗試與他人結伴編程、編寫你自己的代碼。
這是一些對你有幫助的資源:
RegExp
String.replace()
主要考察了正則的一些簡單使用:
1.替換掉_
字符
str = str.replace(/_/g," ");
2.找出首字母大寫的單詞并做分隔
str = str.replace(/([A-Z])/g," $1");
這里的小括號表示分組, $1
表示第1個小括號捕獲內容。
3.上一步在每個大寫字母前都加了一個空格,所以要刪掉收個大寫字母前面的空格
str = str.replace(/^\s,"");
^
表示開始,\s
表示空白符,這里沒有用關鍵字g
,所以只會講第一次匹配到的空格替換成空。
4.將所有空格替換成中橫線
str = str.replace(/\s+/g,"-");
+
表示匹配前一項一或多次,如果不加這個,有一個以上空格的地方會同時出現多個 -
并用情況。
5.將所有字母轉成小寫即可
str = str.toLowerCase();
總結
function spinalCase(str) {
return str.replace(/_/g," ") //替換_
.replace(/([A-Z])/g," $1") //大寫字母分隔
.replace(/^\s/,"") //去掉首個字母前的空格
.replace(/\s+/g,"-") //將空格替換成-
.toLowerCase(); //轉成小寫
}
spinalCase('This Is Spinal Tap');