peterS.: ucfirst mit RegExp

Beitrag lesen

/*
    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:)