oskarsMedlem sedan nov. 20051 263 inlägg Tjenare!
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!
Som den här funktionen t.ex:
http://www.mediacollege.com/internet/javascript/text/case-capitalize.html
Måste man ha en så "stor" funktion för en, i mina ögon, relativt enkel grej?
Och grejen är att jag vill göra detta ungefär så här:
function writeText {
var minText = "oskar"
blabla.blabla.value = capitalize(minText)
}
Jag kommer vilja göra så här på mer än 10st ställen i koden, så jag behöver ett smidigt sätt för det...
Hoppas någon pallar att hjälpa mig :)
Oskar
colioneMedlem sedan juni 20013 386 inlägg String.prototype.capitalizeFirst=function() {
var a=this.split(' ')
for (var n=0; n<a.length; n++) {
a[n]=a[n].substring(0,1).toUpperCase().concat(a[n].substring(1,a[n].length).toLowerCase())
}
return a.join(' ')
}
Anropas via:
"en sträng".capitalizeFirst()
Strängen kan lagras i en variabel, typ:
strStr="Min sträng"
blabla.blabla.value=strStr.capitalizeFirst()
oskarsMedlem sedan nov. 20051 263 inlägg Grymt! Mycket fin lösning! Guldstjärna!
Tack :)
spangoMedlem sedan juni 20006 147 inlägg 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());
red. ÅÄÖ räknas visst som ordgränser...
colioneMedlem sedan juni 20013 386 inlägg 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
spangoMedlem sedan juni 20006 147 inlägg
colione skrev:
/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.)
TravoniMedlem sedan okt. 20041 538 inlägg alert("nils-oskar pettersson".capitalize());
Nils-Oskar Pettersson
alert("nils-oskar pettersson".capitalizeFirst());
Nils-oskar Pettersson