empfange ich eine Zeichenkette welche 3 Zeilen enthält.
Wie kann ich die 2 Zeilenumbrüche löschen?
Will danach den string auf eine bestimmte Stelle trimen.
so trimt er jetzt jede Zeile...
Danke im Voraus!
Gruss
Dani
Boris P. schrieb:> myString = myString .Replace("\n", "");
Es kommt natürlich darauf an, was für eine Zeilenendesequenz verwendet
wird:
\r\n ist unter Windows üblich
\n unter Unix-ähnlichen Systemen
Das ist eine der ersten Fingerübungen, die man macht wenn man eine
Programmiersprache lernt. Wenn sowas hier gefragt wird, dann ist ganz
klar, der TO will nicht programmieren lernen sondern mit copy & paste
was zusammenfrickeln ohne selbst was dafür zu investieren.
Guttemberg lässt grüssen.
Danke!
klappt jetzt!
Kann ich auch aus einem String eine gewisse zeichenfolge heraus filtern?
Z.b. so:
Test 1234 xx:xx:xx:xx:xx tset
und ich möchte nur das hier haben: xx:xx:xx:xx:xx
Problem der ganzen Sache ist, wenn ich den String zuschneide kann ich
nur eine MAC Adresse anzeigen, ich möchte aber mehrer dann in eine
Listbox einfügen...
Gruss
Dani
Hä? Wie sieht denn Dein ursprünglicher String aus?
so?
Test1 1234 xx:xx:xx:xx:xx tset1
Test2 2345 xx:xx:xx:xx:xx tset2
Test3 3456 xx:xx:xx:xx:xx tset3
warum willst Du dann als erstes die Zeilenumbrüche entfernen, wenn Du an
die MAC-Adressen willst. Verarbeite doch einfach Deinen Eingangsstring
zeilenweise und schneide Die Zeilen entsprechend zu...
Tcf K. schrieb:> @Uhu: Beim Entfernen ist es egal, wenn man \r und \n entfernt> liegt> man auf jeden Fall auf der richtigen Seite...
Das wird aber mit Replace nicht klappen, wenn das Muster nicht passt.
INQUIRY_PARTIAL 0c:14:20:22:1d:62 200404
INQUIRY_PARTIAL 2c:54:cf:7b:3f:70 5a020c
INQUIRY 2
INQUIRY 0c:14:20:22:1d:62 200404
INQUIRY 2c:54:cf:7b:3f:70 5a020c
So schaut mein String aus ... am Anfang nicht gleich lang...
von hinten abschneiden und dann nur die mac Adressen rauskopieren ?
würde das gehen?
Gruss
Dani
Uhu U. schrieb:> Das wird aber mit Replace nicht klappen, wenn das Muster nicht passt.
Er könnte z.B. alle \r durch nichts ersetzen und alle \n durch ein
Blank.
Dann würde es bei Unix und Win passen. Wie ist das mit Apple, haben die
nicht nochmal andere Zeilenumbrüche?
Daniel R. schrieb:> von hinten abschneiden und dann nur die mac Adressen rauskopieren ?> würde das gehen?
Schon mal was von regulären Ausdrücken gehört.
Dann lies dich mal ein, das kann auch C#. Suche einfach nach Ausdrücken
in der Form aa:bb:cc:dd:ee:ff oder aa:bb:cc:dd
Wie das geht ist ne schöne Übung um was zu lernen.
Tcf K. schrieb:> @DerAndere: Imho hatten die früher nur \r bin aber nicht sicher.
Sowas hatte ich auch im Kopf. Völlig bescheuert, ja anders machen als
alle anderen um möglichst inkompatibel zu sein.
Dem Idioten, der sich das ausgedacht hat gehört Prügel, genau wie dem,
der sich ausgedacht hat in Windows in Pfaden und Dateinamen Blanks als
gültige Zeichen zuzulassen.
ok jetzt klappts...kann aber nur eine Adresse einleisen... was muss ich
verändern dass ich unbegrenzt viele einlesen kann? im ideal fall arrays
füllen das ich die dann in eine Listbox geben kann..
Gruss
Dani
Daniel R. schrieb:> wie kann ich das jetzt so hinbiegen das er aus einem String die> Mac-Adresse filtert?> Schreibt jetzt nur WENN NUR eine MAC-Adresse kommt
Weil ^ und $ Zeilenanfang und Zeilenende markieren. Ich finde es aber
gut, dass du dich in Bezug auf Regex informiert hast.
So sollte es funktionieren, denke ich:
1
staticclassExtensions
2
{
3
publicstaticstringExtractMac(thisstringinput)
4
{
5
varmatch=MacRegex.Match(input);
6
returnmatch.Success?match.Value:string.Empty;// oder null statt string.Empty
Danke das du dir extra die mühe gemacht hast den Code zu tippen!!
aber wie kann ich mehrere Mac Adressen einlesen?
Wenn mehrere Geräte sichtbar sind bekomm ich mehrere MAC Adressen in
einen String...
Gruss
Dani
Daniel R. schrieb:> Wenn mehrere Geräte sichtbar sind bekomm ich mehrere MAC Adressen in> einen String...
Zeilenweise, wie oben beschrieben (d.h., der Input war wie im Beispiel
und du hast die Zeilen nicht selbst umgebrochen)? Wenn nicht,
funktioniert mein Vorschlag so nicht ...
> aber wie kann ich mehrere Mac Adressen einlesen?
Nur über Regex ginge es zwar (man muss dann natürlich iterieren), aber
das ist meiner Meinung nach hier unnötig kompliziert. Ich würde einfach
in Zeilen splitten und dann für jede Zeile ExtractMac aufrufen.
1
staticclassExtensions
2
{
3
publicstaticstringExtractMac(thisstringinput)
4
{
5
varmatch=MacRegex.Match(input);
6
returnmatch.Success?match.Value:string.Empty;// oder null statt string.Empty
// Alle gültigen Addressen sollten sich jetzt in "macs" befinden.
40
41
}
Falls die anderen Daten (INQUIRY_PARTIAL, INQUIRY, die zweite Zahl etc.)
auch eine Rolle spielen , könnte man eine kleine Klasse schreiben, in
der die jeweilige Zeile dann - evtl. gleich im Konstruktor - geparst
wird (und die dann die entsprechenden Daten speichert).
Jetzt wird mir das ganze ein bisschen zu kompliziert...
Das mit "Static class extension" ist volles Neuland
Wie kann ich jetzt die macs in z.b eine Textbox schreiben?!
Daniel R. schrieb:> Wie kann ich jetzt die macs in z.b eine Textbox schreiben?!
Verwendest du Windows Forms oder WPF? Ich würde eher ein List-Control
einsetzen.
Mit einer Textbox (wie Matthias schon angedeutet hat):
Moin Moin,
Funktioniert jetzt schon fast so wie ich will... warum löscht er den
Eintrag in Macs wieder?
Wenn ich ein Haltepunkt auf macs setzte sehe ich das die Macs drinnen
stehen aber wenn ich das Programm weiter laufen lasse löscht er diese
wieder ?!
Wenn der String nicht mehr gelöscht wird,... wie kann ich diesen in ein
Array umwandeln und dann in eine Listbox schreiben?
Ich arbeite auf der FORM
Gruss
Dani
Moin,
ich habe einen String mit mehrern Absätzen.
Wie kann ich diesen String bei einem Absatz in ein Array schreiben
string[0] // erste Zeile
string[1] // zweite Zeile usw.
Danke im Voraus!
Gruss
Dani
Daniel R. schrieb:> Funktioniert jetzt schon fast so wie ich will... warum löscht er den> Eintrag in Macs wieder?> Wenn ich ein Haltepunkt auf macs setzte sehe ich das die Macs drinnen> stehen aber wenn ich das Programm weiter laufen lasse löscht er diese> wieder ?!
Da wir dein Programm nicht kennen, kann man nur raten ... Vielleicht
erzeugst du immer eine neue Instanz eine Liste (wie im Beispiel, aber
das ist ja nur eine Konsolenanwendung, die das Prinzip zeigen sollte).
Du musst die Liste in deinem Programm auf Klassenebene deklarieren bzw.
auch gleich dort (oder im Konstruktor) initialisieren, nicht wie im
Beispiel lokal in einer Methode.
class DeineKlasse
{
// ...
private List<string> macs = new List<string>();
}
Um den Inhalt der Liste zu löschen, kannst du macs.Clear() aufrufen.
> Wenn der String nicht mehr gelöscht wird,...
Welcher String? Meinst du den Inhalt der Liste?
> wie kann ich diesen in ein Array umwandeln und dann in eine Listbox> schreiben?
Wenn die Daten in der Liste nicht mehr gelöscht werden, kannst du doch
direkt die Liste verwenden. Oder die neuen Daten sofort in die Listbox
setzen (in der Schleife, in der du die MACs zur Liste hinzufügst).
if (!string.IsNullOrEmpty(mac))
{
macs.Add(mac);
macListBox.Items.Add(mac);
}
Falls du die MACs wirklich nur anzeigen und nicht weiter verarbeiten
willst, könntest du genau genommen auf die "macs"-Liste verzichten.
Den Inhalt der Listbox löschst du, wenn nötig, mit
macListBox.Items.Clear();
Das ist jetzt die einfachste Art und Weise, es geht auch eleganter
(LINQ, Data-Binding, sortieren, filtern - evtl. doppelte Einträge
möglich? -, ...). Aber da du offenbar noch mit den Grundlagen kämpfst,
wäre so etwas wohl keine gute Idee. Evtl. solltest du erst einmal ein
Tutorial zu C#-Grundlagen durcharbeiten, anstatt das Ganze übers Knie
brechen zu wollen. Dann würdest du nicht so häufig festhängen ...
Beitrag "Re: Absätze aus String entfernen C#"
// Evtl. noch nachsehen, wie bei dir die Zeilen getrennt sind
input.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
Es ist aber der falsche Ansatz bei deinem Problem.