如何使字符串的第一个字母大写,但不更改任何其他字母的大小写?
例如:
"this is a test"
"This is a test"
"the Eiffel Tower"
"The Eiffel Tower"
"/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获得区域设置正确的大写:
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!) )
这是一种更面向对象的方法:
Object.defineProperty(String.prototype, 'capitalize', { value: function() { return this.charAt(0).toUpperCase() + this.slice(1); }, enumerable: false });
你会像这样调用这个函数:
"hello, world!".capitalize();
预期输出为:
"Hello, world!"