将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。
如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
- String.replace()
-
spinalCase("This Is Spinal Tap")
应该返回"this-is-spinal-tap"
。空格替换成‘-’
-
spinalCase("thisIsSpinalTap")
应该返回"this-is-spinal-tap"
。大写字母前插入一个空格,然后再替换成‘-’
-
spinalCase("The_Andy_Griffith_Show")
应该返回"the-andy-griffith-show"
。‘_’替换成‘-’
-
spinalCase("Teletubbies say Eh-oh")
应该返回"teletubbies-say-eh-oh"
。同1、3
- 思路:解决方法有很多种,我认为主要的难点在于第二个例子,跟其他的例子格式比较不同,所以其中一个想法就是单独筛选出2例,插入空格,变成跟第一个例子相似的格式,然后就能方便进行替换了。代码如下:
- function spinalCase(str) {
function replacer(match){
return ' ' + match;
}
if (str[0] <= 'z'&& str[0] >= 'a'){
str =str.replace(/[A-Z]+/g,replacer);
}
str = str.replace(/\s/g,'-').replace(/_/g,'-').toLowerCase();
return str;
}
spinalCase('This Is Spinal Tap');
- ①replacer方法服务于2例,能够在大写字母前加入空格。②if语句筛选出2例,然后添加空格,格式就变成:this Is Spinal Tap。③之后进行整体替换,第一个replace将空格替换成‘-’,第二个replace将‘_’替换成‘-’,最后将大写换成小写,结束。