Frage Wie mache ich den ersten Buchstaben eines String-Großbuchstabens in JavaScript?


Wie mache ich den ersten Buchstaben eines String-Großbuchstabens, aber ändere nicht die Groß- und Kleinschreibung eines anderen Buchstabens?

Beispielsweise:

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

2960
2018-06-22 08:25


Ursprung


Antworten:


function capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}

Einige andere Antworten ändern sich String.prototype (diese Antwort ist auch gewohnt), aber ich würde jetzt davon abraten wegen der Wartbarkeit (schwer herauszufinden, wo die Funktion hinzugefügt wird prototype und könnte Konflikte verursachen, wenn anderer Code denselben Namen verwendet / ein Browser fügt in Zukunft eine native Funktion mit demselben Namen hinzu).


4721
2018-06-22 08:30



Ein eher objektorientierter Ansatz:

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

Und dann:

"hello world".capitalize();  =>  "Hello world" 

1194
2017-07-20 15:51



In CSS:

p:first-letter {
    text-transform:capitalize;
}

408
2017-07-17 14:06



Hier ist eine verkürzte Version der beliebten Antwort, die den ersten Buchstaben erhält, indem sie die Zeichenfolge als Array behandelt:

function capitalize(s)
{
    return s[0].toUpperCase() + s.slice(1);
}

Aktualisieren:

Laut den folgenden Kommentaren funktioniert das nicht in IE 7 oder darunter.

Update 2:

Vermeiden undefined für leere Saiten (siehe @ njzk2's Kommentar unten), können Sie nach einer leeren Zeichenfolge suchen:

function capitalize(s)
{
    return s && s[0].toUpperCase() + s.slice(1);
}

235
2017-08-28 23:03



Wenn Sie an der Leistung einiger verschiedener Methoden interessiert sind:

Hier sind die schnellsten Methoden basierend auf Dieser Jsperf-Test (bestellt vom schnellsten zum langsamsten).

Wie Sie sehen können, sind die ersten beiden Methoden in Bezug auf die Leistung im Wesentlichen vergleichbar, während die Änderung der String.prototype ist bei weitem die langsamste Leistung.

// 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);
}

enter image description here


134
2017-11-14 03:26



Für einen anderen Fall muss ich den ersten Buchstaben groß schreiben und den Rest klein schreiben. Die folgenden Fälle haben mich dazu gebracht, diese Funktion zu ändern:

//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();

128
2017-07-19 18:17



Hier sind die besten Lösungen:

Erste Lösung In CSS:

p {
  text-transform: capitalize;
}

Zweite Lösung :

function capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}

Sie könnten es auch dem hinzufügen String.prototype also könntest du es mit anderen Methoden verketten:

String.prototype.capitalizeFirstLetter = function() {
    return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
}

und benutze es so:

'string'.capitalizeFirstLetter() // String

Dritte Lösung:

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).toLowerCase();
    }
    return pieces.join(" ");
}

106
2018-02-16 05:30



var string = "hello world";
string = string.charAt(0).toUpperCase() + string.slice(1);
alert(string);

62
2017-07-17 06:23