Spinal Tap Case(fcc)

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

你可能感兴趣的:(Spinal Tap Case(fcc))