题目来自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');