【发布时间】:2011-02-25 20:44:25
【问题描述】:
我在网上搜索过,找不到任何可以帮助我的东西。我想让变量中每个单词的第一个字母大写。
到目前为止我已经尝试过:
toUpperCase();
没有运气,因为它把所有字母都大写了。
【问题讨论】:
标签: javascript jquery
我在网上搜索过,找不到任何可以帮助我的东西。我想让变量中每个单词的第一个字母大写。
到目前为止我已经尝试过:
toUpperCase();
没有运气,因为它把所有字母都大写了。
【问题讨论】:
标签: javascript jquery
使用.replace[MDN]函数将单词开头的小写字母替换为大写字母。
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 Αλφα"
【讨论】:
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,你甚至不需要 Javascript
$('#test').css('text-transform', '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'); BTW,这是最好的答案。我会提交它作为答案。
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 以符合 javascript 的 toUpperCase() 和 toLowerCase()
就这么简单:
string = 'test';
newString = string[0].toUpperCase() + string.slice(1);
alert(newString);
【讨论】:
最简单的方法
let str="hiren raiyani"
str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
用户自定义函数:
function capitalize(str){
return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
}
输出:Hiren Rayani
使用代码作为您的用户定义函数或直接
【讨论】:
var mystring = "hello World"
mystring = mystring.substring(0,1).toUpperCase() +
mystring.substring(1,mystring.length)
console.log(mystring) //gives you Hello World
【讨论】:
var ar = 'foo bar spam egg'.split(/\W/);
for(var i=0; i<ar.length; i++) {
ar[i] = ar[i].substr(0,1).toUpperCase() + ar[i].substr(1,ar[i].length-1)
}
ar.join(' '); // Foo Bar Spam Egg
【讨论】:
你可以试试这个简单的代码加上 ucwords 的 PHP 特性。
function ucWords(text) {
return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');
它将保持大写不变。
【讨论】:
完全基于@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"
【讨论】:
您可以使用text-transform: capitalize; 进行这项工作 -
HTML -
<input type="text" style="text-transform: capitalize;" />
jQuery -
$(document).ready(function (){
var asdf = "WERTY UIOP";
$('input').val(asdf.toLowerCase());
});
注意:它只是改变字符串的视觉表示。如果你提醒这个字符串,它总是显示字符串的原始值。
【讨论】:
没有 JQuery
String.prototype.ucwords = function() {
str = this.trim();
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(s){
return s.toUpperCase();
});
};
console.log('hello world'.ucwords()); // Display Hello World
【讨论】:
首字母大写前要降低的字符串。
(均使用 Jquery 语法)
function CapitaliseFirstLetter(elementId) {
var txt = $("#" + elementId).val().toLowerCase();
$("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
return $1.toUpperCase(); }));
}
另外一个函数将整个字符串大写:
function CapitaliseAllText(elementId) {
var txt = $("#" + elementId).val();
$("#" + elementId).val(txt.toUpperCase());
}
用于文本框点击事件的语法:
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();
}))
});
【讨论】:
var str = "HELLO WORLD HELLO WORLD HELLO WORLD HELLO WORLD";
str = str.replace(
/([A-Z])([A-Z]+)/g,
function (a, w1, w2) {
return w1 + w2.toLowerCase();
});
alert(str);
【讨论】:
这里是 unicode-safe ucwords() 函数,它还尊重双姓,如俄语 Засс-Ранцев 和一些贵族名字,如 Honoré de Balzac、d'Artagnan、Vincent van Gogh、Otto von Bismarck、Sulaymān ibn Dā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();
});
}
【讨论】:
在 JS 中将首字母大写的最简单方法
var string = "made in india";
string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return letter.toUpperCase();});
alert(string );
结果: “印度制造”
【讨论】:
var country= $('#country').val();
var con=country[0].toUpperCase();
ctr= country.replace(country[0], con);
无需创建任何函数,只需 jugaaar
【讨论】:
使用下面的函数
const capitalize = (s) => {
if (typeof s !== 'string') return ''
return s.charAt(0).toUpperCase() + s.slice(1)
}
capitalize('test') //'Test'
capitalize('name') //'Name'
【讨论】:
确实有很多方法可以做到这一点!
我认为人们忘记的一件事是字符串是字符数组。因此,任何字符串的第一个字母都将是其数组的“第零个”元素:
let word = 'interesting';
console.log(word[0]);
// 'i'
利用这一事实来大写第一个字母 (afaik) 的最简单方法是:
let word = 'interesting';
let titleCase = word[0].toUpperCase() + word.substr(1);
console.log(titleCase);
// 'Interesting'
...或作为一个函数:
function toTitleCase(word) {
return word[0].toUpperCase() + word.substr(1);
}
【讨论】:
简短的回答:
let str = 'this is a string';
let result = str.replace(/\b\w/g, x => x.toUpperCase());
console.log(result); // This Is A String
【讨论】: