如何在JavaScript中使字符串的第一个字母大写?
如何使字符串的第一个字母大写,但不改变任何其他字母的大小写 例如:如何在JavaScript中使字符串的第一个字母大写?,javascript,string,letter,capitalize,Javascript,String,Letter,Capitalize,如何使字符串的第一个字母大写,但不改变任何其他字母的大小写 例如: “这是一个测试”→ “这是一个测试” “埃菲尔铁塔”→ “埃菲尔铁塔” “/index.html”→ “/index.html” 基本解决方案是: 函数首字母大写(字符串){ 返回string.charAt(0.toUpperCase()+string.slice(1); } console.log(大写首字母('foo');//Foo这里有一个名为ucfirst()(大写字母的缩写)的函数: 您可以通过调用ucfirst(
→ <代码>“这是一个测试”“这是一个测试”
→ <代码>“埃菲尔铁塔”“埃菲尔铁塔”
→ <代码>“/index.html”“/index.html”
- 基本解决方案是:
函数首字母大写(字符串){
返回string.charAt(0.toUpperCase()+string.slice(1);
}
console.log(大写首字母('foo');//Foo
这里有一个名为ucfirst()
(大写字母的缩写)的函数:
您可以通过调用ucfirst(“某些字符串”)
来大写字符串,例如
ucfirst("this is a test") --> "This is a test"
它的工作原理是把绳子分成两段。在第一行,它拉出firstLetter
,然后在第二行,它通过调用firstLetter.toUpperCase()
来大写firstLetter
,并将其与通过调用str.substr(1)
找到的字符串的其余部分连接起来
您可能会认为,对于空字符串,这将失败,事实上,在像C这样的语言中,您必须满足这一点。然而,在JavaScript中,当您获取空字符串的子字符串时,您只会得到一个空字符串。这里有一种更面向对象的方法:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
您可以调用函数,如下所示:
"hello, world!".capitalize();
function capitalizeTxt(txt) {
return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
}
function capitalizeFirstLetter(str) {
return str[0].toUpperCase() + str.slice(1);
}
预期输出为:
"Hello, world!"
用法:
capitalizedString = someString.capitalize();
这是一个文本字符串=>这是一个文本字符串如果要重新格式化所有caps文本,可能需要修改其他示例:
function capitalize (text) {
return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}
这将确保更改以下文本:
TEST => Test
This Is A TeST => This is a test
以下是流行答案的缩写版本,它通过将字符串视为数组来获取第一个字母:
function capitalize(s)
{
return s[0].toUpperCase() + s.slice(1);
}
更新
根据下面的评论,这在IE 7或更低版本中不起作用
更新2:
要避免空字符串的未定义
(请参阅),可以检查空字符串:
function capitalize(s)
{
return s && s[0].toUpperCase() + s.slice(1);
}
ES版本
const capitalize=s=>s&&s[0]。toUpperCase()+s.slice(1)
//当s可能是假字符串而不是空字符串时始终返回类型字符串事件
常量大写=s=>(s&&s[0].toUpperCase()+s.slice(1))|
将字符串中所有单词的第一个字母大写:
function ucFirstAllWords( str )
{
var pieces = str.split(" ");
for ( var i = 0; i < pieces.length; i++ )
{
var j = pieces[i].charAt(0).toUpperCase();
pieces[i] = j + pieces[i].substr(1);
}
return pieces.join(" ");
}
函数ucFirstAllWords(str)
{
变量片段=str.split(“”);
对于(变量i=0;i
在CSS中似乎更容易:
<style type="text/css">
p.capitalize {text-transform:capitalize;}
</style>
<p class="capitalize">This is some text.</p>
p、 大写{文本转换:大写;}
这是一些文本
这是来自CSS中的(at)。:
p:first-letter {
text-transform:capitalize;
}
(如果您经常使用它,您可以将其封装在函数中,甚至可以将其添加到字符串原型中。)我们可以使用我最喜欢的
RegExp
之一获得第一个字符,看起来像一个可爱的笑脸:/^./
String.prototype.capitalize = function () {
return this.replace(/^./, function (match) {
return match.toUpperCase();
});
};
对于所有咖啡迷来说:
String::capitalize = ->
@replace /^./, (match) ->
match.toUpperCase()
…对于所有认为有更好的方法来实现这一点的人,无需扩展本地原型:
var capitalize = function (input) {
return input.replace(/^./, function (match) {
return match.toUpperCase();
});
};
另一种情况下,我需要它将第一个字母大写,其余字母小写。以下情况使我更改了此功能:
//es5
function capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
capitalize("alfredo") // => "Alfredo"
capitalize("Alejandro")// => "Alejandro
capitalize("ALBERTO") // => "Alberto"
capitalize("ArMaNdO") // => "Armando"
// es6 using destructuring
const capitalize = ([first,...rest]) => first.toUpperCase() + rest.join('').toLowerCase();
然后:
"capitalize just the first word".capitalize(); ==> "Capitalize just the first word"
"capitalize all words".capitalize(true); ==> "Capitalize All Words"
2016年11月更新(ES6),仅供娱乐:
然后大写(“hello”)//hello
如果使用或,库提供字符串扩展,包括大写:
var str = "test string";
str = str.substring(0,1).toUpperCase() + str.substring(1);
_.大写(字符串)将字符串的第一个字母转换为
大写
例如:
_.capitalize("foo bar") == "Foo bar"
使用:
var str=“ruby java”;
log(str.charAt(0.toUpperCase()+str.substring(1))代码>检查此解决方案:
var stringVal = 'master';
stringVal.replace(/^./, stringVal[0].toUpperCase()); // Returns Master
如果您对以下几种不同方法的性能感兴趣:
以下是基于的最快方法(从最快到最慢排序)
如您所见,前两种方法在性能方面基本上是可比的,而更改String.prototype
在性能方面是最慢的
// 10,889,187 operations/sec
function capitalizeFirstLetter(string) {
return string[0].toUpperCase() + string.slice(1);
}
// 10,875,535 operations/sec
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
// 4,632,536 operations/sec
function capitalizeFirstLetter(string) {
return string.replace(/^./, string[0].toUpperCase());
}
// 1,977,828 operations/sec
String.prototype.capitalizeFirstLetter = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
如果您已经(或正在考虑)使用,解决方案很简单:
_.upperFirst('fred');
// => 'Fred'
_.upperFirst('FRED');
// => 'FRED'
_.capitalize('fred') //=> 'Fred'
见其文件:
。.camelCase('Foo Bar');//=>'fooBar'
第一个大写字母的香草JavaScript:
function upperCaseFirst(str){
return str.charAt(0).toUpperCase() + str.substring(1);
}
仅CSS
如果仅在网页上显示时才需要转换:
p::first-letter {
text-transform: uppercase;
}
- 尽管称为“”,但它适用于第一个字符,即在字符串
%a
的情况下,此选择器将应用于%
,因此a
不会大写
- 在IE9+或IE5.5+中,传统符号仅支持一个冒号(
:第一个字母
)
ES2015单班轮
评论
- 在我执行的基准测试中,
string.charAt(0)
和string[0]
之间没有显著差异。但是请注意,对于空字符串,string[0]
将是未定义的
,因此必须重写该函数才能使用“string&&string[0]
”,这与备选方法相比过于冗长
string.substring(1)
比string.slice(1)
快
substring()和slice()之间的基准测试
如今,两者之间的差别非常小():
- 21580613.15 ops/s±1.6%用于
子字符串()
- 对于
slice()
,21096394.34 ops/s±1.8%(2.24%较慢)
最好先用CSS处理这类事情,一般来说,如果你能用CSS解决一些问题,先用CSS解决,然后用JavaScript解决你的问题,所以在这种情况下,试着用CSS中的:第一个字母,然后应用文本转换:大写代码>
因此,请尝试为此创建一个类,这样您就可以全局使用它,例如:。第一个大写字母// 10,889,187 operations/sec
function capitalizeFirstLetter(string) {
return string[0].toUpperCase() + string.slice(1);
}
// 10,875,535 operations/sec
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
// 4,632,536 operations/sec
function capitalizeFirstLetter(string) {
return string.replace(/^./, string[0].toUpperCase());
}
// 1,977,828 operations/sec
String.prototype.capitalizeFirstLetter = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
_.upperFirst('fred');
// => 'Fred'
_.upperFirst('FRED');
// => 'FRED'
_.capitalize('fred') //=> 'Fred'
_.lowerFirst('Fred');
// => 'fred'
_.lowerFirst('FRED');
// => 'fRED'
_.snakeCase('Foo Bar');
// => 'foo_bar'
function upperCaseFirst(str){
return str.charAt(0).toUpperCase() + str.substring(1);
}
var capitalized = yourstring[0].toUpperCase() + yourstring.substr(1);
p::first-letter {
text-transform: uppercase;
}
const capitalizeFirstChar = str => str.charAt(0).toUpperCase() + str.substring(1);
.first-letter-uppercase:first-letter {
text-transform:capitalize;
}
function capitalizeTxt(txt) {
return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
}
capitalizeTxt('this is a test'); // return 'This is a test'
capitalizeTxt('the Eiffel Tower'); // return 'The Eiffel Tower'
capitalizeTxt('/index.html'); // return '/index.html'
capitalizeTxt('alireza'); // return 'Alireza'
String.prototype.capitalizeTxt = String.prototype.capitalizeTxt || function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
'this is a test'.capitalizeTxt(); // return 'This is a test'
'the Eiffel Tower'.capitalizeTxt(); // return 'The Eiffel Tower'
'/index.html'.capitalizeTxt(); // return '/index.html'
'alireza'.capitalizeTxt(); // return 'Alireza'
string[0].toUpperCase() + string.substring(1)
s&&s[0].toUpperCase()+s.slice(1) // 32 char
s&&s.replace(/./,s[0].toUpperCase()) // 36 char - using regexp
'foo'.replace(/./,x=>x.toUpperCase()) // 31 char - direct on string, ES6
'foo'.replace(/^./, str => str.toUpperCase())
'Foo'
function capitalizeFirstLetter(str) {
return str[0].toUpperCase() + str.slice(1);
}
capitalizeFirstLetter("Only because this is really a one-liner I will include this answer. It's an ES6-based interpolated string one-liner.
let setStringName = 'the Eiffel Tower';
setStringName = `${setStringName[0].toUpperCase()}${setStringName.substring(1)}`;