EKKi: String-Manipulation mit replace() und toUpperCase() will nicht

Mahlzeit alle,

ich ärgere mich gerade mit einem Brett vor meinem Kopf herum - wobei ich noch nichts Genaues über dessen Beschaffenheit weiß ... mit anderen Worten: könnte mir mal jemand kurz auf die Sprünge helfen, warum folgendes nicht so tut wie es sollte?

<script type="text/javascript" language="javascript">[code lang=javascript]  
  
var foo = 'bla-blubb';  
var bar = 'blaBlubb';  
  
document.write(foo + ' => ' + foo.replace(/-([a-z])/g, '$1'.toUpperCase()) + ' (sollte eigentlich "' + bar + '" werden)\n');  
  
document.write(bar + ' => ' + bar.replace(/([A-Z])/g, '-$1'.toLowerCase()) + ' (sollte eigentlich "' + foo + '" werden)\n');

</script>[/code]

Ich möchte Strings mit dem Muster "was-auch-immer" in "wasAuchImmer" umwandeln - bzw. umgekehrt. Aber das toUpperCase() bzw. toLowerCase() wird einfach nur ignoriert (Firefox 3.6.2 und IE 6 - andere Browser habe ich gerade nicht zur Hand).

Ich vermute, dass ich nur irgendeine Kleinigkeit übersehe ... aber was?

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  1. <script type="text/javascript" language="javascript">[code lang=javascript]

    var foo = 'bla-blubb';
    var bar = 'blaBlubb';

    document.write(foo + ' => ' + foo.replace(/-([a-z])/g, '$1'.toUpperCase()) + ' (sollte eigentlich "' + bar + '" werden)\n');

    document.write(bar + ' => ' + bar.replace(/([A-Z])/g, '-$1'.toLowerCase()) + ' (sollte eigentlich "' + foo + '" werden)\n');

    
    >   
    > </script>[/code]  
      
    Ich nehme an das die Variabel $1 erst nach toUpperCase() eingefügt wird, du wirst hier vermutlich nicht um eine Funktion herumkommen.  
      
    ~~~javascript
    document.write(foo + ' => ' + foo.replace(/-([a-z])/, function(find) { return find.toUpperCase()}) + ' (sollte eigentlich "' + bar + '" werden)\n');  
    
    

    Struppi.

  2. Hi EKKi.

    document.write(foo + ' => ' + foo.replace(/-([a-z])/g, '$1'.toUpperCase()) + ' (sollte eigentlich "' + bar + '" werden)\n');

    Aber das toUpperCase() bzw. toLowerCase() wird einfach nur ignoriert

    Was soll denn 'toUpperCase' mit dem String '$1' tun? Vielleicht '$' in '€' umwandeln? Das ist seit der Finanzkrise Unsinn ;-)

    Viele Gruesse,
    der Bademeister

  3. Hallo,

    ich ärgere mich gerade mit einem Brett vor meinem Kopf herum - wobei ich noch nichts Genaues über dessen Beschaffenheit weiß ...

    Im Zweifelsfall: Eiche, 22mm. Kann man aber Gucklöcher reinbohren. ;-)

    document.write(foo + ' => ' + foo.replace(/-([a-z])/g, '$1'.toUpperCase()) + ' (sollte eigentlich "' + bar + '" werden)\n');

    Aber das toUpperCase() bzw. toLowerCase() wird einfach nur ignoriert

    Keineswegs. Aber toUpperCase() wird hier auf den String '$1' angewendet, bevor der als Parameter an replace() übergeben wird. Da '$1' keine Kleinbuchstaben enthält, die umgewandelt werden könnten ...

    So long,
     Martin

    --
    Soso, der Klügere gibt nach.
    Aber warum sollen sich immer nur die Dummen durchsetzen?  .oO(?)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  4. Mahlzeit alle,

    danke für die Denkanstöße in die richtige Richtung - mit einer als zweiten Parameter übergebenen Funktion (in der ich die Fundstelle nochmals manipulieren kann) klappt's dann auch fast wie gewünscht ... ein wenig "von hinten durch die Brust ins Auge", aber immerhin stimmt das Ergebnis.

    Vielen Dank nochmal an Euch Forenjunkies! ;-)

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|