Jag har sökt på google efter "Javascript Capitalize" och där fick jag fram flera förslag på funktioner, men eftersom mina javascriptkunskaper eg. endast kan mätas med decilitermått så behöver jag ändå hjälp!
Nu är förstås frågan redan löst men jag vill ändå presentera en kortare lösning som jobbar med ordgränser (inklusive radbrytningar, skiljetecken etc.) i stället för bara mellanslag :)
String.prototype.capitalize = function () {
return this.replace(/[a-zåäö]+/ig, function (s) {return s.charAt(0).toUpperCase() + s.substring(1).toLowerCase();});
}
alert("hej alla!".capitalize());
Och om du fortfarande vill anropa spangos kortare lösning genom att använda:
sträng.Metod()
istället för metod(sträng)
kan vi skriva om den som:
Använd inte denna, använd spangos.
anropas med
sträng.capWords()
Det vi gör genom att använda String.prototype.namn
är att lägga till en ny metod till javscripts inbyggda strängobjekt så den blir åtkomlig på samma sätt som
sträng.toUpperCase()
vilken redan är inbyggd i string-objektet. Självklart är det personligt vilken man föredrar, men jag gillar att augmentera (lägga på metoder/funktioner) objekten
/red Nu han spango editera sitt inlägg innan jag han posta mitt.. :p
/red Nu han spango editera sitt inlägg innan jag han posta mitt.. :p
Bara för att jävlas med dig :p och för att det är mycket snyggare, såklart.
Rättade även en bugg som ställde till elände med svenska tecken. (Jag drömmer om ett regexp-bibliotek där icke-ASCII inte strular.)