当单词包含特殊字符时,每个单词故障的首字母都要大写



我正在使用此行资本化每个单词的所有第一个字母

text.replace(/bw^w/g, l => l.toUpperCase());

它成功大写了普通词,例如 asif saeed-> Asif Saeed

但是,当像"anna alàs i jové"这样的资本化名称时,它将其转换为"Anna AlàS I Jové" S不应是à之后的资本。另外,我们可以有一个解决方案,其中它可以用单个字母忽略单词。

大写第一个字母的最佳方法是:

function toTitleCase(str)
{
    return str.replace(/wS*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
console.log(toTitleCase("anna alàs i jové"));

编辑:

包括以您可以使用的德语字符开始的单词:

function toTitleCase1(str)
   {
        return str.replace(/[wxc0-xd6xd8-xf6xf8-xff]+/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
   }
console.log(toTitleCase1("ànna alàs i jové"));

请尝试。

var text = "anna alàs i jové";
String.prototype.initCap = function() {
  return this.toLowerCase().replace(/(?:^|s)[a-z]/g, function(m) {
    return m.toUpperCase();
  });
};
if (/^[a-zA-Z0-9- ]*$/.test(text) == false) {
  //Inint cap
  console.log(text.initCap());
  
  
  //Init cap if length >1
  var temp = text.split(" ");
  var t = "";
  temp.map(function(value){
    if(value.length > 1){
      t += value.initCap() + " ";
    }else{
      t += value + " ";
    }
  });
  console.log(t);
}

这将解决您的问题。http://plnkr.co/edit/7ggknrw7nwclmpn0y4az?p=preview

      return str.toLowerCase().replace(/b(w)/g, s => s.toUpperCase());

最新更新