javascript - 从所有单词中替换,即使用破折号分隔,第一个字符大写[更简单的方法]

标签 javascript

我成功了,所有变体都按原样显示 Sint-Anna ,但我想知道,是否有更简单的方法,因为它看起来非常困惑?

String.prototype.capitalize = function(){
    var sa = this.replace(/-/g,' ');
    var saa = sa.toLowerCase();
    var sb = saa.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
    var sc = sb.replace(/\s+/g, '-');
    return sc;
};

console.log('sint-anna'.capitalize());
console.log('sint anna'.capitalize());
console.log('sint-Anna'.capitalize());
console.log('Sint Anna'.capitalize());
console.log('SiNt anna'.capitalize());
console.log('SINT ANNA'.capitalize());

控制台:

Sint-Anna
Sint-Anna
Sint-Anna
Sint-Anna
Sint-Anna
Sint-Anna

不可能有像 Si ntAn na 这样的错误输入导致 Si-Ntan-Na

最佳答案

String.prototype.capitalize = function(){
   this.split('-').map(function(str){
      return str[0].toUpperCase() + str.substr(1).toLowerCase();
   }).join("-")  
};

我想上面的内容会更简洁。它在 - 上进行拆分,然后进行映射,其中第一个字母大写,其他字母小写,然后使用 Array.join

- 连接>

关于javascript - 从所有单词中替换,即使用破折号分隔,第一个字符大写[更简单的方法],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967852/

相关文章:

Javascript:如何创建圆 Angular 选项卡菜单?

javascript - 如何避免未使用的 setState 函数?可以在没有 setter 的情况下创建 React useState 吗?

javascript - 启用和禁用复选框上的文本输入已选中和未选中

javascript - 链接标签不起作用,并且在弹出对话框中有额外的边框

javascript - 使用 jquery 克隆表单

javascript - WebStorm JavaScript 实时模板 - 决定光标的位置

javascript - 让 GTM 代码在 Web 应用程序上运行

c# - 从 JavaScript 中访问 C# 变量

javascript - JS : Regex and global match() not creating an array

javascript - 为 VideoJS 5 编写插件