Laden...

strings teilen

Erstellt von TripleX vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.770 Views
TripleX Themenstarter:in
328 Beiträge seit 2006
vor 17 Jahren
strings teilen

Hallo,

Ich habe ein Problem und zwar möchte ich eine Homepage parsen. Dazu möchte ich den Quelltext bei jedem </tr> teilen und den Text davor in ein array speichern. Habe es schon mit string.Split(); versucht, aber da kann man ja nur einzelne Zeichen und kein String angeben.

hier mal ein Beispiel:


<table>
	<tr>
		<td>Test1</td>
		<td>Test2</td>
		<td>Test3</td>
	</tr>
	<tr>
		<td>Test4</td>
		<td>Test5</td>
		<td>Test6</td>
	</tr>
</table>

und ich möchte folgendes haben:


Array[0][0] = Test1
Array[0][1] = Test2
Array[0][2] = Test3

Array[1][0] = Test4
Array[1][1] = Test5
Array[1][2] = Test6

Vielleicht könnte man es auch irgendwie mit Regex machen, aber bei meinem Versuch hat mein Regex einfach vom ersten <tr> bis zum letzten </tr> , und nicht, wie ich wollte vom ersten <tr> bis zum nächsten </tr> gematched. Gibt es kein modifier, wie in PHP der modifier U (Ungreedy)?

Ich verzweifel noch, in PHP war das alles so einfach ... 🙂

MFG TripleX

Träume nicht dein Leben sondern lebe deinen Traum.
Viele Grüße, David Teck

L
667 Beiträge seit 2004
vor 17 Jahren

string[] tokens = meinHomepageQuellCode.Split();

foreach(string token in tokens)
{
   if(token == "<tr>")
      //mach was
   
   if(token == "</tr>")
      //mach was anderes
}

Das sollte für einen simplen Parser der nach <tr> und </tr> tags sucht ausreichen.

"It is not wise to be wise" - Sun Tzu

4.221 Beiträge seit 2005
vor 17 Jahren

Regex wäre auch ne gute Idee

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

564 Beiträge seit 2005
vor 17 Jahren

Original von TripleX
Gibt es kein modifier, wie in PHP der modifier U (Ungreedy)?

.* -> .*?

TripleX Themenstarter:in
328 Beiträge seit 2006
vor 17 Jahren

Vielen Dank ZiMD das hat mir weitergeholfen.

Ich habe jetzt folgenden Code:


            string text;
            string[][] spieler = new String[100][];
            Regex r;

            text = browser.DocumentText;
            
            r = new Regex(@"<tr>(.*?)</tr>");
            MatchCollection  mc1 = r.Matches(text);
            
            for (int i = 0; i < mc1.Count; i++)
            {
                r = new Regex(@"<tr>(.*?)</tr>");
                MatchCollection mc2 = r.Matches(mc1[i].Value);
            }

Wie kann es _mc2 _so mit _spieler _verknüpfen, damit ich ein Array wie oben erhalte?

habe es schon mit mc2.CopyTo(spieler, i);_ oder spieler[j] = mc2[j]; _versucht, das funktioniert aber nicht, weil da kommt immer folgender Fehler:

System.ArgumentNullException: Der Wert darf nicht NULL sein.

Träume nicht dein Leben sondern lebe deinen Traum.
Viele Grüße, David Teck