ucfirst mit RegExp
Michael Rundel
- javascript
Liebe Freunde,
Wie kann ich in allen Worten in einem String den ersten Buchstaben (mit Hilfe von RegExp)groß machen?
folgender Ansatz hat nicht funktioniert:
------------------------------------------------------
<HTML><HEAD><TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
function ucfirst(str) {
return str.replace(/\b(\w+)\b/g, RegExp.$1.charAt(0).toUpperCase()+RegExp.$1.slice(1).toLowerCase());
}
</SCRIPT>
</HEAD><BODY><form name="feedback" method="POST" action="">
Name: <input type="text" name="Name" value="" size="30" onBlur="this.value = ucfirst(this.value)">
<form></BODY></HTML>
------------------------------------------------------
Vielen Dank
Michael
wie sieht es mit:
replace(/\b(.)*\b/g aus?
bye alex
wie sieht es mit:
replace(/\b(.)*\b/g aus?
bye alex
sorry alex, aber deine Vorschläge funktionieren leider nicht...
lg
Michi
Ich frage mich, ob es nicht trotzdem eine einzeilige RegExp Lösung für das Problem gibt...
nachtrag
return str.replace(/\b(.)(*)\b/g, RegExp.$1.toUpperCase()+RegExp.$2.toLowerCase());
...
bye alex
/*
gruss Michael,
regulaere ausdruecke sind schon sehr maechtige und elegante hilfsmittel,
da es sich aber in erster linie um suchmuster handelt, gibt es fuer komplexe
_suchen_und_ersetzen_aufgaben_ nicht _die_eine_killer-RegExp_;
es ist also durchaus auch guter stil, sich dem ziel mit einem mix aus
suchmustern und test-schleifen zu naehern:
*/
var testString = "\nliebe freunde,\n\nwie kann ich in allen worten in einem string den ersten buchstaben (mit hilfe von regExp)groß machen?\n\nfolgender ansatz hat nicht funktioniert:\n";
alert(testString);
// var testStringArray = testString.split(/\W/); // schnelltest fuer einen loesungsansatz;
// var testStringArray = testString.split(/\s/); // schnelltest fuer einen loesungsansatz;
// alert("["+testStringArray.join("]\n[")+"]"); // schnelltest fuer einen loesungsansatz;
var testStringArray = new Array();
var regExpression = /([^\W]*\W)/; // im gegensatz zu "String.split" bleiben hier alle zeichen aus "testString" erhalten;
while (regExpression.test(testString)) {
testStringArray[testStringArray.length] = (regExpression.exec(testString)[1]); // MSIE5 kennt "Array.push" nicht;
testString = testString.replace(regExpression,""); // vehindert die gefangennahme durch eine endlosschleife;
}
alert("["+testStringArray.join("]\n[")+"]");
for (var i=0;i<testStringArray.length;i++) {
testString = testStringArray[i];
testStringArray[i] = testString.charAt(0).toUpperCase() + testString.substring(1); // es muss nicht immer RegExp sein;
}
testString = "[" + testStringArray.join("]\n[") + "]";
alert(testString);
testString = testStringArray.join("");
alert(testString);
//
// getestet auf NN4.x, mozilla, opera7, msie5;
by(t)e by(t)e - peterS. - pseliger@gmx.net
--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)