变量的大写第一个字母

ryr*_*yan 84 javascript jquery

我在网上搜索过什么都找不到帮我.我想在变量中使每个单词大写的第一个字母.

到目前为止我尝试过:

toUpperCase();
Run Code Online (Sandbox Code Playgroud)

并且没有运气,因为它标榜所有字母.

Pet*_*son 221

使用.replace[MDN]功能将以大写字母开头的小写字母替换为大写字母.

var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Hello World"
Run Code Online (Sandbox Code Playgroud)


编辑:如果您正在处理的语言字符不仅仅是az,那么以下(更复杂的)正则表达式可能更适合您的目的.

var str = "???? ????????? björn über ñaque ????";
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "???? ????????? Björn Über Ñaque ????"
Run Code Online (Sandbox Code Playgroud)

  • @andufo当然,这实际上要简单得多.只需使用`str [0] .toUpperCase()+ str.slice(1)` (5认同)
  • @Dediqated感谢你指出这一点,让我知道编辑是否有帮助. (2认同)

vbu*_*ger 70

更简单的方法:

$('#test').css('textTransform', 'capitalize');

我必须给予@Dementic一些荣誉,因为它让我走上了正确的道路.比你提出的任何东西都简单得多.

  • 这只会更改字符串的可视表示形式,而不会更改字符串值本身. (31认同)
  • 注意:`text-transform:capitalize`不会影响所有CAPS. (3认同)
  • 您不能将其应用于从数据库获取的变量,但对于其他实例,此方法非常干净 (2认同)
  • 如果字符串(变量)必须用于除显示之外的某些操作怎么办? (2认同)

Jon*_*and 24

http://phpjs.org/functions/ucwords:569就是一个很好的例子

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

(为简洁起见,省略了来源的功能评论.详情请见相关链接来源)

编辑:请注意,此函数会将每个单词的第一个字母(如您的问题所示)大写,而不仅仅是字符串的第一个字母(正如您的问题标题所示)


Dem*_*tic 14

只是想添加一个纯粹的JavaScript解决方案(没有JQuery)

function capitalize(str) {
  strVal = '';
  str = str.split(' ');
  for (var chr = 0; chr < str.length; chr++) {
    strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
  }
  return strVal
}

console.log(capitalize('hello world'));
Run Code Online (Sandbox Code Playgroud)


Nic*_*hes 13

我想你可以使用substring()和toUpperCase()来拉出第一个字符,大写它,然后用结果替换字符串的第一个字符.

myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"
Run Code Online (Sandbox Code Playgroud)

我认为这应该适合你.另一件需要考虑的事情是,如果显示此数据,您可以向其容器中添加一个具有CSS属性"text-transform:capitalize"的类.


Sol*_*Sol 11

它很简单,如下所示:

string = 'test';
newString = string[0].toUpperCase() + string.slice(1);
alert(newString);
Run Code Online (Sandbox Code Playgroud)


Bru*_*ith 9

要做到这一点,如果你要使用它,你甚至不需要Javascript

$('#test').css('textTransform', 'capitalize');
Run Code Online (Sandbox Code Playgroud)

为什么不像css一样这样做

#test,h1,h2,h3 { text-transform: capitalize; }
Run Code Online (Sandbox Code Playgroud)

或者将其作为一个班级,并将该班级应用到您需要的任何地方

.ucwords { text-transform: capitalize; }
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到Stackoverflow.你的答案是建议一个替代方案(在某些用例中可能完全有效),但并没有真正回答这个问题.当我理解这个问题时,作者想要实际转换Javascript变量,而不仅仅是它的可视化表示. (4认同)
  • 是的,但是对于这个问题的其他人可能对我这样的javascript或css答案没问题,这真的很有帮助...... (3认同)

小智 6

听说过substr()吗?

对于首发:

$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));
Run Code Online (Sandbox Code Playgroud)


[更新:]

感谢@FelixKling的提示:

$("#test").text(function(i, text) {
    return text.substr(0,1).toUpperCase() + text.substr(1);
});
Run Code Online (Sandbox Code Playgroud)

  • 而不是调用`text()`**四次**,将函数传递给`text()`:`$("#test").text(function(i,text){return text.substr(0 ,1).toUpperCase()+ text.substr(1);});` (4认同)

mma*_*one 5

在@ peter-olson的回答的基础上,我采用了一种更加面向对象的方法而不使用jQuery:

String.prototype.ucwords = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
}

alert("hello world".ucwords()); //Displays "Hello World"
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/LzaYH/1/


Hir*_*ani 5

最简单的方法

let str="hiren raiyani"
str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
Run Code Online (Sandbox Code Playgroud)

用户定义函数:

function capitalize(str){
 return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
}
Run Code Online (Sandbox Code Playgroud)

输出:Hiren Raiyani

使用代码作为您的用户定义函数或直接