小编典典

如何在JavaScript中将字符串的首字母大写?

spring

如何使字符串的第一个字母大写,但不更改其他任何字母的大小写?

例如:

  • "this is a test" -> "This is a test"
  • "the Eiffel Tower" -> "The Eiffel Tower"
  • "/index.html" -> "/index.html"

阅读 1083

收藏
2020-04-23

共2个答案

小编典典

基本解决方案是:

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

console.log(capitalizeFirstLetter('foo')); // Foo

修改了其他一些答案String.prototype(这个答案也曾经使用过),但是由于可维护性,我现在建议这样做(很难找出将函数添加到的位置prototype,如果其他代码使用相同的名称/浏览器,则可能导致冲突将来添加具有相同名称的本机函数)。

…然后,当你考虑国际化时,这个问题还有很多,正如这个令人惊讶的好答案(埋在下面)所示。

如果要使用Unicode代码点而不是代码单元(例如,在基本多语言平面之外处理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!)
2020-04-23
小编典典

这是一种更加面向对象的方法:

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

你可以像下面这样调用该函数:

"hello world".capitalize();

预期输出为:

"Hello world" 
2020-04-23