Thread Zwei Zeichen _gleichzeitig_ in String finden
(19 answers)
Opened by geloescht at 2012-06-20 18:13
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. |