6.3 KiB
6.3 KiB
title | localeTitle |
---|---|
Spinal Tap Case | 脊椎龙头套 |
如果卡住,请记得使用**Read-Search-Ask
** 。尝试配对程序并编写自己的代码
问题说明:
将给定的字符串转换为带有由短划线连接的单词的小写句子。
相关链接
- 字符串全局对象
- JS Regex资源
- JS字符串原型替换
- JS String Prototype ToLowerCase
提示:1
为所有空格和下划线创建正则表达式。
现在尝试解决问题
提示:2
您还必须将所有内容都设为小写。
现在尝试解决问题
提示:3
棘手的部分是让正则表达式部分工作,一旦你这样做,然后只需将大写字母转换为小写,并使用replace()
用下划线替换空格。
现在尝试解决问题
扰流警报!
提前解决!
基本代码解决方案
function spinalCase(str) {
// Create a variable for the white space and underscores.
var regex = /\s+|_+/g;
// Replace low-upper case to low-space-uppercase
str = str.replace(/([az])([AZ])/g, '$1 $2');
// Replace space and underscore with -
return str.replace(regex, '-').toLowerCase();
}
// test here
spinalCase('This Is Spinal Tap');
代码说明:
- 正则表达式包含正则表达式
/\s+|_+/g
,它将选择所有空格和下划线。 - 第一个
replace()
在字符串str中遇到任何大写字符之前放置一个空格,以便稍后可以用短划线替换空格。 - 返回字符串时,另一个
replace()
使用正则表达式用空格替换空格和下划线。
中级代码解决方案:
function spinalCase(str) {
// Replace low-upper case to low-space-uppercase
str = str.replace(/([az])([AZ])/g, '$1 $2');
// Split on whitespace and underscores and join with dash
return str.toLowerCase().split(/(?:_| )+/) .join('-');
}
// test here
spinalCase('This Is Spinal Tap');
代码说明:
- 与第一个解决方案类似,第一个
replace()
在字符串str中遇到任何大写字符之前放置一个空格,以便稍后可以用短划线替换空格。 - 这里的字符串是正则表达式
/(?:_| )+/
和join()
-
ed on-
上的split()
,而不是使用replace()
来替换空格和下划线。
相关链接
高级代码解决方案
function spinalCase(str) {
// "It's such a fine line between stupid, and clever."
// --David St. Hubbins
return str.split(/\s|_|(?=[AZ])/).join('-').toLowerCase()
}
代码说明:
- 在以下条件之一拆分字符串( 转换为数组 )
- 遇到空白字符[
\s
] - 遇到下划线字符[
_
] - 或后跟大写字母[
(?=[AZ])
]
- 遇到空白字符[
- 使用连字符(
-
)加入数组 - 小写整个结果字符串
相关链接
捐款说明:
- 请勿添加与任何现有解决方案类似的解决方案。如果您认为它**相似但更好** ,那么尝试合并(或替换)现有的类似解决方案。
- 添加解决方案的说明。
- 将解决方案分为以下类别之一 - 基本 , 中级和高级 。
- 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 ( 不要 删除任何现有的用户名 )