首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串中放置短划线

问在字符串中放置短划线
EN

Stack Overflow用户
提问于 2016-11-14 09:11:27
回答 3查看 66关注 0票数 1
代码语言:javascript
复制
function dashes(str) {
    str =  str.replace(/_/g,' ').replace(/\s+/g,"-").toLowerCase();
    return str;
}

//test cases
dashes("thisCakeIsDelicious");
dashes("TheBig cat was Boastful");

期望的输出分别是:“this-cake-is- desired”和“the -big cat-was-boastful”。如何在"TheBig“之间加一个空格而不与"Boastful”前面的空格相矛盾。我已经尝试过正则表达式,特别是大写字母,但正如你所看到的,大而自负的开头是B。

EN

回答 3

Stack Overflow用户

发布于 2016-11-14 11:29:03

这应该可以工作,但我不能完全确定需求,所以我决定按单词而不是按字母进行划分(因此LLLLie将生成llllie,而不是l-l-l-lie)

([a-z]+)([A-Z]{1})|(\s)

匹配项:

  • ([a-z]+):1或多个小写letter
  • ([A-Z]{1}):1大写letter
  • (\s+):一个或多个空格字符(等于[\r\n\t\f\v ])

​

代码语言:javascript
复制
var dasher = function(str) {
  return str
         .trim()
         .replace(/([a-z]+)([A-Z]{1})|(\s+)/g, '$1-$2')
         .toLowerCase();
}

console.log(dasher('thisCakeIsDelicious'));
console.log(dasher('TheBig cat was Boastful'));
console.log(dasher('The cakeIsA     LLLLLie'));
console.log(dasher('  JeremySpoke inClass  Today'));

​

票数 3
EN

Stack Overflow用户

发布于 2016-11-14 09:25:26

您可以在replace函数中使用回调

​

代码语言:javascript
复制
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") );

​

票数 0
EN

Stack Overflow用户

发布于 2016-11-14 10:04:03

代码语言:javascript
复制
x = "thisCakeIsDelicious";
x.replace(/([a-z](?=[A-Z]))| /g, '$1-');

结果:

this-Cake-Is-Delicious,

和

代码语言:javascript
复制
x = "TheBig cat was Boastful";
x.replace(/([a-z](?=[A-Z]))| /g, '$1-');

结果:

The-Big-cat-was-Boastful

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40580609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档