Πώς μπορώ να κάνω το πρώτο γράμμα μιας συμβολοσειράς κεφαλαίο, αλλά να μην αλλάξω την πεζότητα των άλλων γραμμάτων;
Για παράδειγμα:
"this is a test"
-> "This is a test"
"ο Πύργος του Άιφελ"
-> "Ο Πύργος του Άιφελ"
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Κάποιες άλλες απαντήσεις τροποποιούν το String.prototype
(και αυτή η απάντηση το έκανε επίσης), αλλά θα σας συμβούλευα να μην το κάνετε τώρα λόγω της συντηρησιμότητας (είναι δύσκολο να βρείτε πού προστίθεται η συνάρτηση στο πρότυπο
και θα μπορούσε να προκαλέσει συγκρούσεις αν άλλος κώδικας χρησιμοποιεί το ίδιο όνομα / ένα πρόγραμμα περιήγησης προσθέτει μια εγγενή συνάρτηση με το ίδιο όνομα στο μέλλον).
Ακολουθεί μια πιο αντικειμενοστραφής προσέγγιση:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Θα καλούσατε τη συνάρτηση, όπως αυτή:
"hello world".capitalize();
Με την αναμενόμενη έξοδο να είναι:
"Hello world"
Εδώ υπάρχει μια συνάρτηση που ονομάζεται ucfirst() (συντομογραφία για "κεφαλαίο πρώτο γράμμα"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Μπορείτε να γράψετε ένα αλφαριθμητικό με κεφαλαίο γράμμα καλώντας την ucfirst("some string") -- για παράδειγμα,
ucfirst("this is a test") --> "This is a test"
Λειτουργεί χωρίζοντας τη συμβολοσειρά σε δύο κομμάτια. Στην πρώτη γραμμή βγάζει το firstLetter και στη συνέχεια στη δεύτερη γραμμή κάνει κεφαλαίο το firstLetter καλώντας την firstLetter.toUpperCase() και το ενώνει με το υπόλοιπο της συμβολοσειράς, το οποίο βρίσκεται καλώντας την str.substr(1).
Θα μπορούσατε να σκεφτείτε ότι αυτό θα αποτύγχανε για μια κενή συμβολοσειρά, και πράγματι σε μια γλώσσα όπως η C θα έπρεπε να το προβλέψετε αυτό. Ωστόσο, στη JavaScript, όταν παίρνετε μια υποοδηγία μιας κενής συμβολοσειράς, απλά παίρνετε πίσω μια κενή συμβολοσειρά.