我已经在网上搜索,我找不到任何东西来帮助我。我想在一个变量中每个单词大写的第一个字母。
到目前为止,我已经尝试:
toUpperCase();
我没有任何运气,因为它大写所有的字母。
使用.replace函数替换以大写字母开头的小写字母。
var str = "hello, world!";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
alert(str); //Displays "Hello, World!"
如果您处理的是 a-z 以外的单词字符,那么的(更复杂的)正则表达式可能更适合您的目的。
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 Αλφα"
一个更简单的方法:
$('#test').css('textTransform','capitalize');
我必须给Rafael Herscovici some credit以引导我走上正确的道路。它比你们提议的要简单得多。
http://phpjs.org/functions/ucwords:569有一个很好的例子
function ucwords (str) {
return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
(省略了源代码中的函数注释。详情请参见链接的源代码)
编辑:请注意,此函数大写每个单词的第一个字母(如您的问题所问),而不仅仅是字符串的第一个字母(如您的问题标题所问)
这里是一个纯 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'));
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(42条)