如何使字符串的第一个字母大写,而不改变其他任何字母的大小写?
例如:
"this is a test"
"This is a test"
"the Eiffel Tower"
"The Eiffel Tower"
"/index.html"
"/index.html"
→
发布于 2009-06-22 08:30:39
基本解决方案是:
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
来获得区域设置正确的大写:
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。
发布于 2010-07-20 23:51:08
下面是一种更面向对象的方法:
Object.defineProperty(String.prototype, 'capitalize', {
value: function() {
return this.charAt(0).toUpperCase() + this.slice(1);
},
enumerable: false
});
你可以像这样调用这个函数:
"hello, world!".capitalize();
预期输出为:
"Hello, world!"
发布于 2012-07-17 22:06:18
在CSS中:
p:first-letter {
text-transform:capitalize;
}
https://stackoverflow.com/questions/1026069
复制相似问题