Re: [Dresden-pm] Vorkommen eines Elementes in einem String zählen

Andreas Kunert akunert at main-rheiner.de
Die Aug 9 02:33:46 PDT 2005


Hallo Falk,

danke für die Antwort. Leider sind meine Perl-Kenntnisse rudimentär. 
Daher fehlt mir ein Beispiel, wie ich aus einem String dann die 
einzelnen Key/Value-Paare erhalten kann.

Beispiel, wie ich es derzeit mache:
<Ergebnisse>
<Heim>Bayern</Heim><Gast>Rostock</Gast><Resultat>0:3</Resultat>
<Heim>Dortmund</Heim><Gast>Bremen</Gast><Resultat>0:3</Resultat>
</Ergebnisse>
....
@spiele = ($ergebnisse =~ /<Heim>(.*?)<\/Heim>/g);
@results = ($ergebnisse =~ /<Resultat>(.*?)<\/Resultat>/g);
if(@spiele > @results){
    print "es fehlt noch was\n";
    $vollendet = 0;
} elsif (@spiele eq @results){
    print "Spieltag erledigt\n";
    $vollendet = 1;
}
Das Problem ist nämlich, dass bei Paarungen, die noch nicht 
stattgefunden haben kein Resultat-Tag mitgeliefert wird.
Daher ist eine Prüfung auf
@ansetzungen = ($ergebnisse =~ 
/<Heim>(.*?)<\/Heim><Gast>(.*?)<\/Gast><Resultat>(.*?)<\/Resultat>/g)
bei diesen Paarungen ja nicht möglich.
Es sei denn, ich kann da mit regex das Resultat als "eventuell 
vorhanden" kennzeichnen???

Zu der Zeile @spiele hätte ich noch ne Frage. Wie kann ich daraus dann 
einen Eintrag basteln in der Form
<div class="ansetzung"><span>Bayern : Rostock</span><span>0:3</span></div>

Sollte sicherlich über eine Schleife gehen, die das Array/Hash/Liste 
@ansetzungen durchsucht und die einzelnen Werte zuweist.
Aber ich vermute, dass die Treffer in der Form $heim1 = $ansetzung[0] , 
$gast1 = $ansetzung[1] .... eingetragen werden

GRuß Andreas
Falk Herrmann wrote:

>Ich würde einen Hash nehmen. Heim-Gast machst du zum Key und Ergebnis
>zum Value. Bevor Du es dann in die DB schiebst, einfach prüfen ob Value
>vorhanden ist.
>
>Aber was passiert denn, wenn ein Spiel wegen Nichtbespielbarkeit des
>Platzes, UFO Landung oder sonstiges ausfällt? Nachgeholt wird das Spiel
>ja dann meist nach mehreren Wochen. Mach dann einfach Value zu "- : -"
>und schieb es trotzdem in die DB.
>