首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中使字符串的第一个字母大写?

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

Stack Overflow用户
提问于 2009-06-22 16:25:32
回答 108查看 2.8M关注 0票数 4.4K

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

例如:

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

EN

回答 108

Stack Overflow用户

发布于 2009-06-22 08:30:39

基本解决方案是:

代码语言:javascript
复制
function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

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

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

...and然后,当你考虑国际化时,这个问题还有很多,正如this astonishingly good answer (埋在下面)所显示的那样。

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

代码语言:javascript
复制
const capitalizeFirstLetter = ([ first, ...rest ], locale = navigator.language) =>
  first.toLocaleUpperCase(locale) + rest.join('')

console.log(
  capitalizeFirstLetter('foo'), // Foo
  capitalizeFirstLetter(""), // "" (correct!)
  capitalizeFirstLetter("italya", 'tr') // İtalya" (correct in Turkish Latin!)
)

有关更多国际化选项,请参阅original answer below

票数 6.9K
EN

Stack Overflow用户

发布于 2010-07-20 23:51:08

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

代码语言:javascript
复制
Object.defineProperty(String.prototype, 'capitalize', {
  value: function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
  },
  enumerable: false
});

你可以像这样调用这个函数:

代码语言:javascript
复制
"hello, world!".capitalize();

预期输出为:

代码语言:javascript
复制
"Hello, world!"
票数 1.5K
EN

Stack Overflow用户

发布于 2012-07-17 22:06:18

在CSS中:

代码语言:javascript
复制
p:first-letter {
    text-transform:capitalize;
}
票数 755
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1026069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档