string durchsuchen, immer zwischen 2 unds das Wort heraushohlen

Fridulin

Erfahrenes Mitglied
Hallo Leute,

ich weiß die Überschrift ist ein wenig unglücklich formuliert. Es geht darum, ich bekomme einen String z.B. /&test1& (11.11.11)//&Test2& (11.11.11)//&Test3& (11.11.11)/ gesendet. Ich möchte jetzt test1 in einen extra String schreiben sowie die Zahl die in Klammern dahinter steht. Also es soll so aussehen:
string str1 = test1;
string str2 = 11.11.11 und so weiter.
Mein Problem ist jetzt wenn ich es mit meinem Code mache trennt er es wirklich das beim 1sten & ab und beim letzten, aber ich möchte es ja gerne beim 1sten abtrennen und danach es beim 2ten abtrennen.
Code:
int anfang3 = msg.IndexOf("&");
int ende3 = msg.LastIndexOf("&");
anfang3 = anfang3 + 1;
int laenge3 = ende3 - anfang3;
string test = null;
				
if((anfang3 > 0) || (ende3 > 0))
{
    test = msg.Substring(anfang3, laenge3);
}

Mein späteres Problem wenn ich das so mache wird sein, da sich die Anzahl der Inhalte ändert wird sich auch automatisch die Anzahl der Strings verändern. Wie bekomme ich das hin, oder geht auch auch noch einfacher und ich bin auf dem Holzweg.
Also mein Programm bekommt von meinem Server den string Inhalt zugeschickt, der Client soll dann es später in z.B. einer ListBox bei sich einfügen. In der ListBox steht dann die Namen und IPs. Der User kann dann im Client auf den jeweiligen Namen / IP klicken und dann soll der Client etwas an der IP schicken. Das Meiste funktioniert bereits, nur eben ich weiß nicht wie ich den ankommenden String aufbereiten soll.

Kann mir vielleicht einer Helfen? Für jede Hilfe währe ich dankbar

Grüße
Firdulin

---- Edit ----

Also Besser ist es ja das in einem Array zu schreiben, damit währe mein 2tes Problem schon gelößt. Nur ich muß trotzdem den String trennen und in einen Array schreiben.

Grüße
 
Zuletzt bearbeitet:

Alexander Schuc

crazy-weasel
Hi.

Hier ein kleines Snippet wie du es machen könntest.

Es wir zuerst bei jedem Slash aufgesplittet, bei jedem Teil dann nochmal beim Leerzeichen geteilt, die unnützen Zeichen raus, und fertig.

Code:
string[] splittedData = data.Split('/');
foreach (string entry in splittedData)
{
	string[] splittedEntry = entry.Split(new char[] { ' ' }, 2);

	if (splittedEntry.Length != 2)
		continue;

	string name = splittedEntry[0].Replace("&", "");
	string ip = splittedEntry[1].Trim('(', ')');
}

name und ip sind dann von einem Paar die Daten, welche du dann wie du willst weiterverarbeiten kannst.

Scheinst da ja ein Netzwerkprotokol zu haben. Selbst ausgedacht, oder ists vorgegeben?

Mfg,
Alex
 

Fridulin

Erfahrenes Mitglied
Hallo,

Vielen Dank das hat super geklappt. Besten Dank.
Zu deiner Frage, naja ich sende mit nem TcpClient zum TcpListener listener, eine Nachricht
Code:
sendeNachricht(stream, "ich bins " + "%" + name + "%" + "$" + ip + "$");
der Server Speicher diese in einer Datei und prüft ob da noch mehrere Einträge sind (mehrere Clients) und sendet dieses dann wieder zum Clienten zurück und das ist dann genau die Nachricht die ich dank deiner Hilfe auswerten kann. Diese Unnützen Zeichen habe ich eigentlich nur eingebaut, daß ich das mit meiner Methode besser einlesen kann. Ganz simple eigentlich das ganze, aber funktionell wie ich finde ;)
Also ein Protokoll kann man das eigentlich nicht nennen.

Viele Grüße und Vielen Dank noch einmal für deine Hilfe
Fridulin
 

balufreak

Grünschnabel
Hallo!

Ich habe ein ähnliches Problem. Und zwar habe ich einen HTML Quelltext als String in meinem Programm. Im String steht jetzt irgendwo
HTML:
...
<fieldset clas="..."...
...
</fieldset>
...

Ich möchte nun alles was zwischen <fieldset> und </fieldset> steht in einem neuen String haben. wie mache ich das.

Mit
PHP:
Dim splittedData() As String = documentText.Split("fieldset")
funktioniert es nicht :(
 

Neue Beiträge