Thread Zwei Zeichen _gleichzeitig_ in String finden (19 answers)
Opened by geloescht at 2012-06-20 18:13

topeg
 2012-06-20 19:14
#159249 #159249
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Dein Code löst aber nicht die von dir gestellte Aufgabe. So wird "tt@@@@example.org" als Valid erkannt. Übrigens musst du "." entwerten ( "\." ), da es in regulären Ausdrücken für ein beliebiges Zeichen steht.

Zudem lässt sich dein Code kürzer schreiben:
Code (perl): (dl )
1
2
3
$atstatus = $internetpost =~ /@/;
$dotstatus = $internetpost =~ /\./;
if ($atstatus and $dotstatus ) {goto SecondCheckOK;}

Oder noch mehr gekürzt:
Code (perl): (dl )
if ($internetpost =~ /@/ and $internetpost =~ /\./ ) {goto SecondCheckOK;}

Im skalaren Kontext gibt ein Match ein Wahr (1) oder Falsch (0) zurück.

Aber um auf ähnlich weise dein Problem wie gewünscht zu lösen:
Code (perl): (dl )
1
2
3
my @at = $internetpost =~ /@/g;
my @dot = $internetpost =~ /\./g;
if( @dot > 0 and @at == 1) {goto SecondCheckOK;}


Auch das kann man kürzer schreiben:
Code (perl): (dl )
if(() = $internetpost =~ /\./g > 0 and () = $internetpost =~ /@/g == 1) { goto SecondCheckOK; }

Auffällig ist die Konstruktion () = .... Das erzwingt ein Listenkontext. damit werden die gefundenen Zeichen zurück geliefert. Hier interessiert nur die Anzahl der Funde.

Zudem kann man bei Perl das if auch hinter die Aktion setzen:
Code (perl): (dl )
goto SecondCheckOK if $internetpost =~ /@/ and $internetpost =~ /\./;

Das kommt der normalen Sprache näher.

View full thread Zwei Zeichen _gleichzeitig_ in String finden