Boris Hoeller: uppercase2lowercase und viceversa

Hi,

Kleine Wochenendfrage: (hat auch ein wenig mit XML zu tun)

SCRIPT:
-- snip --

#!/usr/bin/perl -w

$string = "<TAG>hallo</TAG>";

the magic Zeile is missing

print $string;

-- snap --

OUTPUT:

<tag>HALLO</tag>

TASK: What ist the magic Zeile?

Danke für einen Cloue!
bonngrüße
bho

  1. $string = "<TAG>hallo</TAG>";
    for(split(//,$string)) { (/[a-z]/) ? ($output .= uc) : ($output .= lc); }
    print $output; # <tag>HALLO</tag>

    Nicht ausprobiert, aber dürfte fürs Einfachste mal funktionieren.

    1. $string = "<TAG>hallo</TAG>";
      for(split(//,$string)) { (/[a-z]/) ? ($output .= uc) : ($output .= lc); }
      print $output; # <tag>HALLO</tag>

      Nicht ausprobiert, aber dürfte fürs Einfachste mal funktionieren.

      Thanx a lot - klappt hervorragend!

      bonngrüße
      bho

    2. Hi!

      $string = "<TAG>hallo</TAG>";
      for(split(//,$string)) { (/[a-z]/) ? ($output .= uc) : ($output .= lc); }
      print $output; # <tag>HALLO</tag>

      Ja, funktioniert aber nur, wenn auch garantiert ist, dass vorher genau der invertierte Fall vom Wunschergebnis vorliegt. Ein Ausgangswert von "<Tag>Hallo</Tag>" wuerde jedoch zu "<tAG>hALLO</tAG>" konvertiert werden.

      Schlage daher folgendes vor:

      #!/usr/bin/perl -w

      $string = "<TAG>hallo</TAG>";

      $string = uc($string);                  # all to upper case
      $string =~ s/(<.*?>)/lc($1)/eg;         # <tags> to lower case

      print $string;

      Bye, Calocybe

  2. Hallo Boris,

    eine magische Zeile/Funktion habe ich bisher vergeblich gesucht.
    Vielleicht gibt es sie irgendwo in den Untiefe diverser Bibilotheken.
    Ich habe mir so beholfen:

    sub changeCase
    {
      my @bCase = ("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Ä","Ü","Ö");
      my @sCase = ("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","ä","ü","ö");
      my $repstring = $_[0];
      my $repMode = $_[1];

    foreach $c (0..29)
       { if($repMode eq "small") { $repstring =~ s/$bCase[$c]/$sCase[$c]/g; }
         if($repMode eq "big")   { $repstring =~ s/$sCase[$c]/$bCase[$c]/g; }}

    return $repstring;
    }

    plump aber funktioniert
    Stephan Schmid

    1. eine magische Zeile/Funktion habe ich bisher vergeblich gesucht.
      Vielleicht gibt es sie irgendwo in den Untiefe diverser Bibilotheken.

      Upper-/Lowercase sind normale Funktionen wie split, etc...:

      uc - return upper-case version of a string (SYNOPSIS: uc EXPR, uc)
      lc - return lower-case version of a string (SYNOPSIS: lc EXPR, lc)

      Gruss, Beat

      1. geschreiben, getestet, begeistert
        Hab ich in SELFHTML/Perl nicht gefunden ...?
        Danke