如何使字符串的第一个字母大写,但不更改其他任何字母的大小写?
例如:
"this is a test" -> "This is a test"
"the Eiffel Tower" -> "The Eiffel Tower"
"/index.html" -> "/index.html"
基本解决方案是:
function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); } console.log(capitalizeFirstLetter('foo')); // Foo
修改了其他一些答案String.prototype(这个答案也曾经使用过),但是由于可维护性,我现在建议这样做(很难找出将函数添加到的位置prototype,如果其他代码使用相同的名称/浏览器,则可能导致冲突将来添加具有相同名称的本机函数)。
String.prototype
prototype
…然后,当你考虑国际化时,这个问题还有很多,正如这个令人惊讶的好答案(埋在下面)所示。
如果要使用Unicode代码点而不是代码单元(例如,在基本多语言平面之外处理Unicode字符),则可以利用String#[@iterator]与代码点一起使用的事实,并且可以使用toLocaleUpperCase正确的语言环境大写形式:
Unicode
String#[@iterator]
toLocaleUpperCase
function capitalizeFirstLetter([ first, ...rest ], locale = navigator.language) { return [ first.toLocaleUpperCase(locale), ...rest ].join(''); } console.log(capitalizeFirstLetter('foo')); // Foo console.log(capitalizeFirstLetter("𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐎𐐲𐑌𐐼𐐲𐑉" (correct!) console.log(capitalizeFirstLetter("italya", 'tr')); // İtalya" (correct in Turkish Latin!)
这是一种更加面向对象的方法:
String.prototype.capitalize = function() { return this.charAt(0).toUpperCase() + this.slice(1); }
你可以像下面这样调用该函数:
"hello world".capitalize();
预期输出为:
"Hello world"