Entwickler-Ecke

Basistechnologien - String Filtern aber wie?


Psylon - Sa 30.08.08 22:47
Titel: String Filtern aber wie?
Hallo, ich habe eine Frage und zwar möchte ich in mein C# Projekt folgenden Text filtern:

<ID>1</ID><ID>2</ID><ID>3</ID>

Diesen Text s.o bekommen ich von meinem PHP Script, d.h. ich Poste variablen an mein PHP Script, mein PHP script führt ein querie an meiner MYSQL Datenbank aus und als Antwort bekomme ich dann das mit den ID's.
Nun zu meiner Frage wie filtere ich sowas? Also als ausgabe bzw als gefilterten Text möchte ich dann sowas haben:

1
2
3

Vielen dank im vorraus

mfg
Psylon


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am So 31.08.2008 um 00:31


Flitzs - So 31.08.08 10:34

Hey,
für sowas könntest du die Klasse System.Text.RegularExpressions benützen.

Das könnte dann in etwa so aussehen:

C#-Quelltext
1:
2:
3:
var input = "<ID>1</ID><ID>2</ID><ID>3</ID>";
          var r = new Regex(@"\d");
          var output = r.Matches(input);


mfg Flitzs


Psylon - So 31.08.08 11:17

Ok erst ma danke das funzt auch schon soweit gut aber könnte man das auch so machen das statt <ID> auch <Dateiname> <Passwort> steht? Also das kann immer verschieden sein


Robert.Wachtel - So 31.08.08 12:16

Kann es sein, dass Du von Deinem PHP-Skript ein XML bekommst? Dann benutze doch einfach die entsprechenden XML-Klassen.


Psylon - So 31.08.08 12:18

nein ich bekommt kein XML, aber könntest du mir weiterhelfen?


Robert.Wachtel - So 31.08.08 12:57

Gerne, wenn Du mal Dein Problem genau schilderst. :roll:


Psylon - So 31.08.08 13:10

nein ich bekommt kein XML, aber könntest du mir weiterhelfen?


Flitzs - So 31.08.08 18:45

user profile iconPsylon hat folgendes geschrieben:
Ok erst ma danke das funzt auch schon soweit gut aber könnte man das auch so machen das statt <ID> auch <Dateiname> <Passwort> steht? Also das kann immer verschieden sein


Die Pattern die ich dir gepostet habe liefert dir alle Zahlen in einem String, also solange die Werte die da stehen numerisch sind, ist es egal was in den <> ist (ausser natürlich Zahlen ;))

mfg Flitzs


Flitzs - So 31.08.08 19:17

user profile iconFlitzs hat folgendes geschrieben:
user profile iconPsylon hat folgendes geschrieben:
Ok erst ma danke das funzt auch schon soweit gut aber könnte man das auch so machen das statt <ID> auch <Dateiname> <Passwort> steht? Also das kann immer verschieden sein


Die Pattern die ich dir gepostet habe liefert dir alle Zahlen in einem String, also solange die Werte die da stehen numerisch sind, ist es egal was in den <> ist (ausser natürlich Zahlen ;))

mfg Flitzs


EDIT:
Du könntest auch das Pattern einfach umschreiben das es in etwa so aussehen würde:

C#-Quelltext
1:
2:
3:
var input = "<Dateiname>Me</Dateiname><Passwort>12345</Passwort>";
          var r = new Regex(@"<[A-Za-z0-9]*>|</[A-Za-z0-9]*>");
          var output = r.Replace(input, "");


Das liefert die alle Zeichen zwischen <> und </>.
Wenn du genauers wissen willst solltest du dich vll mal nach Regex googeln.

mfg Flitzs


Psylon - So 31.08.08 20:23

Wie gebe ich dass den als messagebox aus?


Flitzs - So 31.08.08 20:50

user profile iconPsylon hat folgendes geschrieben:
Wie gebe ich dass den als messagebox aus?


Ich würde dir raten, dir doch lieber nochma ein Buch / ein OpenBook anzusehen, das hilft dir wohl mehr als wenn ich dir jetzt die Zeile Code poste.

Moderiert von user profile iconChristian S.: Beiträge zusammengefasst

Wobei ich mir sicher bin das du die Antwort auf deine Frage in unter 5 Minuten bei Google findest.

mfg Flitzs


Psylon - So 31.08.08 20:57

Nö.. :D ich habs schon hinbekommen


Psylon - Mo 01.09.08 14:52

Also erstmal danke für die ganze Hilf ohne eucht hätte ich das glaubich nie geschaft. Aber eine klitzekleine Frage bleibt noch und zwar mein Code sieht zZ. so aus:


C#-Quelltext
1:
2:
3:
var input = "<Dateiname>Me</Dateiname><Passwort>12345</Passwort>";
          var r = new Regex(@"<[A-Za-z0-9]*>|</[A-Za-z0-9]*>");
          var output = r.Replace(input, Environment.NewLine);


Und so war der alte:


C#-Quelltext
1:
2:
3:
var input = "<Dateiname>Me</Dateiname><Passwort>12345</Passwort>";
          var r = new Regex(@"<[A-Za-z0-9]*>|</[A-Za-z0-9]*>");
          var output = r.Replace(input," ");



der unterschied zum neuen Codei ist dass, dass ich jetzt Statt nen Leerzeichen eine neuen Absatz mache, da liegt auch das problem und zwar wie mache ich das,dass ein Multiline Text in einer Listbox /Listview bekomme? Ich hab schon paar beispiele gesehen aber das ist etwas zu viel Code und außerdem benutze ich mehrere Listboxen, vielleicht kennt Ihr ja ein Tipp?

Gruß
Psylon


Kha - Mo 01.09.08 16:44

Da die Frage nichts mehr mit dem Ausgangsthema zu tun hat und hier auch in der falschen Sparte wäre, möchte ich dich bitten, dafür ein neues Thema aufzumachen :) .