zeichenkette im text suchen
-
hi leute,
ich bin so langsam am verzweifeln... ich bau ein programm mit dem eine firma kindendaten suchen kann.
das läuft so... es wird ein xml script geladen das dann in listviewitems geladen wird für eine listview(im details format). eines hat den text und 7 subitems. nun muss man über den text und den ersten subitem suchen können... das klappt soweit, aber regex findet nicht alles... zum beispiel findet regex nicht einträge die klammern enthalten.
ich habe schon versucht diese rauszutrimmen, aber i-wie scheint es mir so als ob diese "normalen" sachen damit vollkommen überfordert sind.
gibt es eine andere lib zum durchsuchen von strings??
-
Servus,
sorry, aber deinen Text kann man erst verstehen, wenn man ihn 2x gelesen hat. Groß- und Kleinschreibung in Kombination ist keine Sünde
Anscheinend ist dein Regulärer Ausdruck falsch bzw. unpassend für das, was du suchen möchtest. Zeig uns mal ein Such-Beispiel oder was du bereits schon hast.
BTW. einfache Suchanweisungen kannst du auch mit einem "deinString.IndexOf()" etc. realisieren.
gruß
Hellsgore
-
hier mal das trimmen ohne regex
for (int a = 1; a < mText.Length -1; a++) { mText2[a - 1] = mText[a].Remove(0, 2); tempForReplace = mText2[a - 1]; if (tempForReplace.IndexOf("&") > 0) { temp2 = tempForReplace.Replace("&", "&"); temp2 = temp2.Trim(" & ".ToCharArray()); tempForReplace = temp2; } if (tempForReplace.IndexOf("(") > -1) { temp2 = tempForReplace.Trim('('); tempForReplace = temp2; } if (tempForReplace.IndexOf(")") > -1) { temp2 = tempForReplace.Trim(')'); tempForReplace = temp2; } mText2[a - 1] = tempForReplace; Console.WriteLine("\"" + mText2[a - 1] + "\" - " + a.ToString() + " - Ok"); }
das mit regex war so:
Regex rx1 = new Regex(Regex.Escape("(")); Regex rx2 = new Regex(Regex.Escape(")")); if (Regex.IsMatch(mText2[a - 1], Regex.Escape("(")) || Regex.IsMatch(mText2[a - 1], Regex.Escape(")"))) mText2[a - 1] = wandleum(mText2[a - 1], rx1, rx2); //die methode public static string wandleum(string value, Regex rx1, Regex rx2) { string tmp = value; rx1.Replace(tmp, "- "); Console.WriteLine(tmp); rx2.Replace(tmp, "- "); Console.WriteLine(tmp); return tmp; }
das ganze läuft bis ca 30000 - 40000- zeilen gut und dann werden keine klammern mehr getrimmt... manchmal dazwischen auch nicht
-
oder anderst gefragt... wie lautet der regex zum entfernen von runden klammern??
weiss das jemand??
in google steht nur was in die klammern rein muss, aber nicht wie man sie aus einem text mit zum beispiel replace entfernt...
-
Hmmm... irgendwie scheine ich nicht zu verstehen, was du wirklich machen möchtest.
Willst du nur deine Klammern aus dem String entfernen? Dann hilft ein einfaches
deinString = deinString.Replace(")", string.Empty);
-
ne, das geht nur bis zu 30000 mal oder so... es sind ne ganze menge einträge.. manchmal bis zu 50000...
und ich hab auch grad rausgefunden das das system einfach überfordert ist mit si einer menge an daten... hab grad einen haufen rausgelöscht und siehe da, er findet auch trotz klammern alles.kann das sein das regex ab ca 200 einträgen spackt?
-
Dann lies die Werte nacheinander ein. - Also Schrittweise.
Kannst du ja gern in 200er Schritten machen.