如何在 JavaScript 中使字符串的第一个字母大写?

新手上路,请多包涵

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

例如:

  • "this is a test""This is a test"

  • "the Eiffel Tower""The Eiffel Tower"

  • "/index.html" "/index.html"

原文由 Robert Wills 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 495
1 个回答

基本解决方案是:

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

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

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

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

如果你想使用 Unicode 代码点而不是代码单元(例如处理基本多语言平面之外的 Unicode 字符)你可以利用这个事实 String#[@iterator] 与代码点一起工作,你可以使用 toLocaleUpperCase 获取区域设置正确的大写:

 const capitalizeFirstLetter = ([ first, ...rest ], locale = navigator.language) =>
  first === undefined ? '' : first.toLocaleUpperCase(locale) + rest.join('')

console.log(
  capitalizeFirstLetter(''), // [empty string]
  capitalizeFirstLetter('foo'), // Foo
  capitalizeFirstLetter("𐐶𐐲𐑌𐐼𐐲𐑉"), // "𐐎𐐲𐑌𐐼𐐲𐑉" (correct!)
  capitalizeFirstLetter("italya", 'tr') // İtalya" (correct in Turkish Latin!)
)

有关更多国际化选项,请参阅 下面的原始答案

原文由 Steve Harrison 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题