将破折号放在一个字符串中

时间:2016-11-14 01:11:27

标签: javascript regex

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开头。

3 个答案:

答案 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-');