我在网上搜索找不到任何可以帮助我的东西。我想在变量中将每个单词的首字母大写。
到目前为止,我已经尝试过:
toUpperCase();
而且没有运气,因为它把所有字母都大写。
Answers:
使用.replace[MDN]功能用大写字母替换单词开头的小写字母。
var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
alert(str); //Displays "Hello World"
编辑:如果您要处理的字符不仅仅是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 Αλφα"
Björn Lüchinger这样的名称BjöRn LüChinger。有什么解决办法吗?
str[0].toUpperCase() + str.slice(1)
var first = str.slice(0, str.indexOf(' ')); str = first.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }) + str.substr(first.length);了特殊字符。
更简单的方法:
$('#test').css('textTransform', 'capitalize');
我必须给@Dementic一定的功劳,以带领我走上正确的道路。比你们提议的要简单得多。
text-transform:capitalize不会影响所有大写字母。
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'));
c < str.length;应该是chr < str.length;
我想您可以使用substring()和toUpperCase()提取第一个字符,将其大写,然后用结果替换字符串的第一个字符。
myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"
我认为这应该为您工作。要考虑的另一件事是,如果正在显示此数据,则可以向其容器添加一个具有CSS属性“ text-transform:capitalize”的类。
要做到这一点,如果您要使用的话,甚至根本不需要Javascript
$('#test').css('textTransform', 'capitalize');
为什么不像CSS这样做
#test,h1,h2,h3 { text-transform: capitalize; }
或将其作为一门课程,并将其应用于您需要的任何地方
.ucwords { text-transform: capitalize; }
听说过substr()吗?
对于初学者:
$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));
[更新:]
感谢@FelixKling的提示:
$("#test").text(function(i, text) {
return text.substr(0,1).toUpperCase() + text.substr(1);
});
text() 四次,而是将一个函数传递给text():$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
$('#test').style.textTransform='capitalize';
$('#test').css('textTransform', 'capitalize'); 顺便说一句,这是最好的答案。我将其作为答案提交。
document.getElementById('test').style.textTransform='capitalize';
基于@ 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"
toUpperCaseWords符合javascripttoUpperCase()和toLowerCase()
完全基于@Dementric的答案,可以使用简单的jQuery方法'ucwords'调用此解决方案...感谢在此做出贡献的每个人!!!
$.extend({
ucwords : function(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
}
});
示例: 可以使用方法调用
var string = "this is a test";
string = $.ucwords(string); // Returns "This Is A Test"
最简单的方法
let str="hiren raiyani"
str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
输出:Hiren Raiyani
使用代码作为用户定义的函数或直接
首字母大写之前要降低的字符串。
(均使用Jquery语法)
function CapitaliseFirstLetter(elementId) {
var txt = $("#" + elementId).val().toLowerCase();
$("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
return $1.toUpperCase(); }));
}
另外一个将WHOLE字符串大写的函数:
function CapitaliseAllText(elementId) {
var txt = $("#" + elementId).val();
$("#" + elementId).val(txt.toUpperCase());
}
在文本框的click事件上使用的语法:
onClick="CapitaliseFirstLetter('TextId'); return false"
我已经使用了此代码-
function ucword(str){
str = str.toLowerCase().replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(replace_latter) {
return replace_latter.toUpperCase();
}); //Can use also /\b[a-z]/g
return str; //First letter capital in each word
}
var uc = ucword("good morning. how are you?");
alert(uc);
HTML:
<input class="capitalize" name="Address" type="text" value="" />
jQuery Javascript:
$(".capitalize").bind("keyup change", function (e) {
if ($(this).val().length == 1)
$(this).val($(this).val().toUpperCase());
$(this).val($(this).val().toLowerCase().replace(/\s[\p{L}a-z]/g, function (letter) {
return letter.toUpperCase();
}))
});
这是unicode安全的ucwords()函数,该函数还尊重俄语Засс-Ранцев等双重姓氏,以及Honoréde Balzac,d'Artagnan,Vincent van Gogh,Otto von Bismarck,SulaymānibnDāwūd等一些贵族名称:
String.prototype.ucwords = function() {
return this.toLowerCase()
.replace(/(^|\s|\-)[^\s$]/g, function(m) {
return m.toUpperCase();
})
// French, Arabic and some noble names...
.replace(/\s(Of|De|Van|Von|Ibn|Из|Ван|Фон|Ибн)\s/g, function(m) { // Honoré de Balzac, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd etc.
return m.toLowerCase();
})
.replace(/(^|\s)(D|Д)(['’][^\s$])/g, function(m, p1, p2, p3) { // D'Artagnan or d'Artagnan / Д’Артаньян или д’Артаньян
return p1 + (p1 === "" ? p2/*.toUpperCase()*/ : p2.toLowerCase()) + p3.toUpperCase();
});
}