1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
615
615
EMPFEHLEN
-
Hi,
da bin ich mal wieder mit einer Frage. Ich suche mit folgendem Code nach Regex in einem Array.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
List<string> testen = new List<string>(); string start = @"GetValueForID"; string end = ")"; Regex expressionStart = new Regex(start); try { foreach (string element in strArray) { if (expressionStart.IsMatch(element)) { int startindex = element.IndexOf(start) + start.Length + 2; int endindex = element.IndexOf(end, startindex) - 1; string id = element.Substring(startindex, endindex - startindex); //string whitespace = element.Trim(); testen.Add(id); //testen.Add(whitespace); } } } catch (Exception ex) { MessageBox.Show(ex.ToString(),"Failure"); }
Jetzt hab ich aber das Problem, dass mein Programm immer stehen bleibt wenn es in einer Datei auf einen Zeilenumbruch stößt, ich meine damit, dass es zwar den Regex findet, aber nach diesem ein zeilenumbruch in der datei ist und mein Programm daher nichts findet da das was rausgefiltert werden soll in einer neuen Zeile ist.
Wie krieg ich es hin, dass nicht nur in einer Zeile sondern in mehreren Zeilen, mind. 2 Zeilen gelesen wird.
Hoffe einer kann mir helfen. Grüße
-
du musst als RegexOptions Singleline angeben, dann wird alles sozusagen als ein string ausgewertet (genaueres kann dir msdn sagen).
Wobei ich aber bei dir keinen Sinn für Regex sehe.
Beim Typ string gibt es die Methode Contains, prüf doch direkt damit ab.
Sollte sogar auch performanter sein.
Oder vielleicht sogar noch besser direkt mit IndexOf prüfen
(dort kannst du auch angeben ob Groß- und Kleinschreibung beachtet werden soll).
Müsstest es also nur wie folgt umbauen:
(In meinem Beispiel wird jetzt Groß- und Kleinschreibung nicht beachtet)Code :1 2 3 4 5 6
int startindex = element.IndexOf(start, StringComparison.CurrentCultureIgnoreCase); if(startindex >=0) { startindex += start.Length + 2; ... }
-
Hi,
habs ausprobiert komme aber immer wieder auf den gleichen Fehler.
Kann ich das Problem lösen, wenn ich zum Beispiel die Leerzeichen und Zeilenumbrüche in meinem String lösche? wenn ja sollte das doch dann mit replace(zeilenumbrüche, "") gehen oder

-
Meinst mit gleichen Fehler das das Programm stehen bleibt?
Ist das oben der original Quelltext?
Den aus dem Code wird mir nicht ersichtlich warum das Programm stehen bleiben sollte.
Was verstehst du unter stehen bleiben?
Wenn das Programm steht bleibt, drück mal Pause in der IDE und schau mal nach wo der debugger gerade ist. Geh dann Schritt für Schritt mit dem debugger weiter.
Edit:
Glaube nicht das es an den Zeilenumbrüchen liegt.
-
Mit stehenbleiben meine ich folgenden Fehler:
Code :1 2 3
"Eine Ausnahme (erste Chance) des Typs "System.ArgumentOutOfRangeException" ist in mscorlib.dll aufgetreten. Zusätzliche Informationen: Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein."
Der Quelltext oben ist ein Auszug aus dem Originalquelltext, denke auch nicht das es an diesem liegt, sondern eher daran, dass ich immer bei Leerzeichen im string auf die oben aufgeführte Exception stoße.
An was denkst du liegt es dann
-
nein
die Fehlermeldung besagt ungefähr so viel als das du versucht auf eine Indexposition zu zugreifen die garnicht existiert. (Sehe grad steht ja auch drunter
)
Am besten du setzt mal im catch einen Breakpoint und schaust dir den Stacktrace der Exception an, dort sollte dir aufgezeigt werden in welcher Zeile der Fehler auftritt.
Ich vermute mal der Fehler liegt am Substring das die Länge für den zu ermitteltenden Text (endindex - startindex) + StartIndex über die Länge von element hinaus geht.
Edit:
Oder es kracht schon bei der ermittlung von endIndex,
-
Alles klar werde ich mal machen,
ach übrigends du hast recht das genau an der Stelle bei Substring die Exception auftritt.
Wie kann ich den einen String nach einem Regex absuchen? Mit foreach geht das ja dann nicht oder? (Nur als hoffentlich kleine Frage am Rande
)
-
Ähnliche Themen
-
string mit regex match auslesen
Von cuban im Forum PHPAntworten: 10Letzter Beitrag: 09.10.07, 14:23 -
Ankerpunkte mittels Regex auslesen
Von U-Wasser-Gehaeuse im Forum PHPAntworten: 5Letzter Beitrag: 12.03.07, 20:09 -
Substring per Regex auslesen
Von wSam im Forum JavaAntworten: 7Letzter Beitrag: 08.08.06, 20:02 -
Probleme mit dem Regex
Von Unicate im Forum PHPAntworten: 5Letzter Beitrag: 26.02.06, 19:38 -
[REGEX] 2 Objecte in Pattern auslesen.
Von DelphiDell im Forum PHPAntworten: 2Letzter Beitrag: 24.12.05, 15:31





Zitieren
Login





