跳到主要内容
第7页,共12页
正文中添加了1925个字符
本·阿斯顿
  • 55.3公里
  • 68
  • 217
  • 341

基本解决方案是:

函数大写FirstLetter(字符串){return string.charAt(0).toUpperCase()+string.slice(1);}console.log(大写首字母('foo'));//console.log(大写首字母(“𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐶𐐲𐑌𐐼𐐲𐑉“(不正确!)console.log(大写首字母(“ijsselmeer”);//IJsselmeer“(不正确!)

但是,当你考虑国际化和非拉丁字符时,这个问题还有很多,比如这个令人惊讶的好答案(埋在下面)显示。

如果您想使用Unicode代码点而不是代码单元(例如,在基本多语言平面之外处理Unicode字符),可以利用以下事实字符串[@iterator]使用代码点:

函数capitalieFirstLetter([first,…rest],locale=navigator.language){return[first.toLocaleUpperCase(locale),…rest].join('');}console.log(大写首字母('foo'));//console.log(大写首字母(“𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐎𐐲𐑌𐐼𐐲𐑉“(正确!)console.log(大写第一个字母(“mbainann”,'ga'));//IJsselmeer“(不正确!)

考虑到在某些语言中,首字母大写并不总是字符串中的第一个字母:

函数capitalieFirstLetter(str,locale=navigator.language){return str.replace(/^\p{CWU}/u,char=>char.toLocaleUpperCase(语言环境));}console.log(大写首字母('foo'));//console.log(大写首字母(“𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐎𐐲𐑌𐐼𐐲𐑉“(正确!)console.log(大写首字母(“ijsselmeer”);//IJsselmeer“(正确!)大写首字母('mbaineann','ga');//“mBaineann”

其他一些答案修改字符串.原型(这个答案过去也是这样),但我建议现在不要这样做,因为它具有可维护性(很难找到函数被添加到原型如果其他代码使用相同的名称,可能会导致冲突。

史蒂夫·哈里森
  • 124.8公里
  • 17
  • 88
  • 72