Stefan Priebe: gleiche Buchstaben aber Groß-KLeinschriebung ignorieren

Hallo!

Ich möchte folgendes machen:
z. B.
$text = "a";
$text2 = "A";
if ($text ??? $text2) {print "Gleich";} else {print "nicht gleich";}

hieber soll gleich rauskommen

aber wenn $text = "a"; und $text2 = "Auto"; soll nicht gleich rauskommen.

es sollen also schon die sleben Buchstaben sein, doch die Schriebung soll ignoriert werden...

Stefan

  1. Hallo!

    Ich möchte folgendes machen:
    z. B.
    $text = "a";
    $text2 = "A";
    if ($text ??? $text2) {print "Gleich";} else {print "nicht gleich";}

    hieber soll gleich rauskommen

    aber wenn $text = "a"; und $text2 = "Auto"; soll nicht gleich rauskommen.

    es sollen also schon die sleben Buchstaben sein, doch die Schriebung soll ignoriert werden...

    Stefan

    Hallo Stefan,

    probier mal das folg. Script:
    ---schnipp---
    $text = "a";
    $text2 = "Auto";

    if( $text =~ /$text2/i){
    print "Gleich";
    }
    else{
    print "Nicht gleich!";
    }
    ---damit kommt genau das raus was Du brauchst...---

    Literatur: http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_inhalt.html auch zum Download!

    Viele Grüße, Rolf

    1. Hi!

      $text = "a";
      $text2 = "Auto";

      if( $text =~ /$text2/i){

      »»  print "Gleich";

      }

      Vorsicht! Wenn text2 = "a" ist und text = "Auto" wuerde hier auch "Gleich" rauskommen. Deshalb muesste es heissen
          if ($text =~ /^$text2$/i) { ...

      Allerdings finde ich Franks Methode sowieso besser.

      Calocybe

      1. Hi!

        $text = "a";
        $text2 = "Auto";

        if( $text =~ /$text2/i){
        »»  print "Gleich";
        }

        Vorsicht! Wenn text2 = "a" ist und text = "Auto" wuerde hier auch "Gleich" rauskommen. Deshalb muesste es heissen
            if ($text =~ /^$text2$/i) { ...

        Allerdings finde ich Franks Methode sowieso besser.

        Calocybe

        Hallo Calocybe, hallo Mitstreiter,

        stimmt Franks Methode ist auf jeden Fall besser - finde ich auch.

        Jedoch das Script was ich postete, hab ich getestet: es erfüllt seinen Zweck...

        Also herzliche Grüße an Euch Beide mal ganz speziell hier im Forum, Rolf

        PS: Und Grüße an Stefan, den Hilfesuchenden, hat er sein Problem lösen können???

        1. Hallo Ihr!

          $text = "a";
          $text2 = "Auto";

          if( $text =~ /$text2/i){
          »»  print "Gleich";
          }

          Vorsicht! Wenn text2 = "a" ist und text = "Auto" wuerde hier auch "Gleich" rauskommen. Deshalb muesste es heissen
              if ($text =~ /^$text2$/i) { ...

          Jedoch das Script was ich postete, hab ich getestet: es erfüllt seinen Zweck...

          Hast Du es denn auch so getestet?
          $text  = "aAAab=C";
          $text2 = "a+B=c";

          if( $text =~ /^$text2$/i){
              print "Gleich";
          }

          Mit den regulären Ausdrücken muß man doch recht vorsichtig umgehen, um NUR und GENAU das zu erreichen, was man eigentlich möchte ...
          if( $text =~ /^\Q$text2\E$/i){ ...

          Gruß,
             Jörk

          1. Hallo Jörk, liebe Forumer,

            ---zum Testen---

            Vergleiche....

            $var = @ARGV[0]; # 0 oder 1 eingeben

            if ($var){
            $text = "a";
            $text2 = "Auto";
            }
            else{
            $text  = "aAAab=C";
            $text2 = "a+B=c";
            }

            print "---mein Vorschlag----\n";
            if( $text =~ /$text2/i){print "Gleich\n";} else{print "Nicht gleich!\n";}

            print "---calocybes Vorschlag---\n";
            if( $text =~ /^$text2$/i){ print "Gleich\n";}else{print "Nicht gleich!\n";}

            print "-----joerks Vorschlag-----\n";
            if( $text =~ /^\Q$text2\E$/i){ print "Gleich\n";} else{print "nicht gleich\n";}

            print "---Franks Vorschlag----\n ";
            if (lc $text eq lc $text2) { print "gleich"; } else{print "Nicht gleich!\n";}

            ---ende---

            Also Deine (Jörk) und Franks Lösung sind OK.
            Meine Hausaufgaben werd ich machen :-)

            Literatur:
            http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_inhalt.html

            Herzliche Grüße an Alle und ein schönes Wochenende, Rolf

    2. hi!

      if( $text =~ /$text2/i){

      Na, man muss ja nicht gleich mit Kanonen auf Spatzen schießen ;)) Außerdem dauert die Überprüfung mit regulären Ausdrücken im Gegensatz zu meiner Methode fast 1,5 mal so lange.

      bye, Frank!

  2. hi!

    Ich möchte folgendes machen:
    z. B.
    $text = "a";
    $text2 = "A";
    if ($text ??? $text2) {print "Gleich";} else {print "nicht gleich";}

    Die einfachste Lösung:
      if (lc $text eq lc $text2) { print "gleich"; }

    bye, Frank!