webForumDet fria alternativet

Capitalize!

JavaScriptur Javascript

6 svar · 415 visningar · startad av oskars

Medlem sedan nov. 20051 317 inlägg
Frågan#1

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

Medlem sedan juni 20014 421 inlägg
#2
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()
Medlem sedan nov. 20051 317 inlägg
#3

Grymt! Mycket fin lösning! Guldstjärna!

Tack :)

Medlem sedan juni 20008 205 inlägg
#4

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...

Medlem sedan juni 20014 421 inlägg
#5

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

Medlem sedan juni 20008 205 inlägg
#6

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.)

Medlem sedan okt. 20041 556 inlägg
#7

alert("nils-oskar pettersson".capitalize());
Nils-Oskar Pettersson

alert("nils-oskar pettersson".capitalizeFirst());
Nils-oskar Pettersson

140 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)