function dashes(str) {
str = str.replace(/_/g,' ').replace(/\s+/g,"-").toLowerCase();
return str;
}
//test cases
dashes("thisCakeIsDelicious");
dashes("TheBig cat was Boastful");
所需的输出分别是:“这个蛋糕好吃”和“大猫自吹自擂”。 如何在“TheBig”之间放置一个空格而不与“Boastful”之前的空间相矛盾。我已经尝试过正则表达式特定的大写字母,但是你可以看到Big和Bastful以B开头。
答案 0 :(得分:4)
这应该有效,但我对这些要求并不十分肯定,所以我决定不按字母划分(所以LLLLie
将导致llllie
,而不是{{1} })
l-l-l-lie
匹配
([a-z]+)([A-Z]{1})|(\s)
:1个或更多小写字母([a-z]+)
:1个大写字母([A-Z]{1})
:一个或多个空格字符(等于(\s+)
)
[\r\n\t\f\v ]

答案 1 :(得分:0)
您可以在replace
函数
function dashes(str) {
return str.replace(/(?!^)(\s?[A-Z\s+])/g, function(x) {
return '-' + x.trim();
}).toLowerCase();
}
//test cases
console.log( dashes("thisCakeIsDelicious") );
console.log( dashes("TheBig cat was Boastful") );

答案 2 :(得分:0)
dotnet build
结果
x = "thisCakeIsDelicious";
x.replace(/([a-z](?=[A-Z]))| /g, '$1-');
,
和
this-Cake-Is-Delicious
结果
x = "TheBig cat was Boastful";
x.replace(/([a-z](?=[A-Z]))| /g, '$1-');