将每个单词的第一个字母大写

时间:2011-09-19 06:50:40

标签: javascript

我想使用javascript函数来大写每个单词的第一个字母

例如:

THIS IS A TEST ---> This Is A Test
this is a TEST ---> This Is A Test
this is a test ---> This Is A Test

什么是简单的javascript函数

9 个答案:

答案 0 :(得分:33)

这是我用来完成工作的一个小班轮

var str = 'this is an example';
str.replace(/\b./g, function(m){ return m.toUpperCase(); });

但John Resig做了一个非常棒的脚本来处理很多案例 http://ejohn.org/blog/title-capitalization-in-javascript/

更新

ES6 +回答:

str.split(' ').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');

可能还有比这更好的方法。它将适用于重音字符。

答案 1 :(得分:9)

function capitalizeEachWord(str)
{
   var words = str.split(" ");
   var arr = [];
   for (i in words)
   {
      temp = words[i].toLowerCase();
      temp = temp.charAt(0).toUpperCase() + temp.substring(1);
      arr.push(temp);
   }
   return arr.join(" ");
}

答案 2 :(得分:5)

"tHiS iS a tESt".replace(/[^\s]+/g, function(str){ 
    return str.substr(0,1).toUpperCase()+str.substr(1).toLowerCase();
  });

其他变体:

"tHiS iS a tESt".replace(/(\S)(\S*)/g, function($0,$1,$2){ 
    return $1.toUpperCase()+$2.toLowerCase();
  });

答案 3 :(得分:4)

这是一个简单的解决方案,可以将句子分解为数组,然后循环遍历数组,创建一个带有大写单词的新数组。

 function capitalize(str){

  var strArr = str.split(" ");
  var newArr = [];

  for(var i = 0 ; i < strArr.length ; i++ ){

    var FirstLetter = strArr[i].charAt(0).toUpperCase();
    var restOfWord = strArr[i].slice(1);

    newArr[i] = FirstLetter + restOfWord;

  }

  return newArr.join(' ');

}

答案 4 :(得分:1)

看看ucwords from php.js - 这似乎是你正在寻找的。基本上,它是:

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

请注意,THIS IS A TEST将返回THIS IS A TEST,因此您必须像这样使用它:

var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring.toLowerCase());

或稍微修改一下这个函数:

function ucwords (str) {
    str = (str + '').toLowerCase();
    return str.replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}
var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring); // This Is A Test

答案 5 :(得分:1)

这会将每个由空格或短划线分隔的单词大写

function capitalize(str){
    str = str.toLowerCase();
    return str.replace(/([^ -])([^ -]*)/gi,function(v,v1,v2){ return v1.toUpperCase()+v2; });
}

示例:

  • i lOvE oRanges =&gt;我爱橘子
  • strAnge-looKing语法=&gt;奇怪的语法

答案 6 :(得分:1)

如果您不介意使用库,可以使用Sugar.js capitalize()

  

大写(全部=假)大写第一个字符   字符串和下划线所有其他字母。如果一切都是真的,那么所有的话   字符串将大写。

示例:

'hello kitty'.capitalize()     -> 'Hello kitty'
'hello kitty'.capitalize(true) -> 'Hello Kitty'

答案 7 :(得分:1)

您也可以使用以下方法使用过滤器:

function Ucwords(str){
    var words = str.split(' ');
    var arr = [];
    words.filter(function(val){
        arr.push(val.charAt(0).toUpperCase()+ val.substr(1).toLowerCase());             
    })
    console.log(arr.join(" ").trim());
    return arr.join(" ").trim();
}

Ucwords("THIS IS A TEST") //This Is A Test

Ucwords("THIS ") //This

答案 8 :(得分:0)

{
        String s = "this is for testing";
        String sw[] = s.split("\\s");
        String newS = "";
        for(int i=0; i<=sw.length-1; i++)
        {
            String first = sw[i].substring(0,1);
            String last = sw[i].substring(1);
            newS+= first.toUpperCase()+last+" ";
            
        }
        System.out.println(newS);
    }