Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Bestimmte Zeichenlänge aus Textdatei auslesen
Andi123
myCSharp.de - Member



Dabei seit:
Beiträge: 26

Themenstarter:

Bestimmte Zeichenlänge aus Textdatei auslesen

beantworten | zitieren | melden

Hallo,

hier im Forum wurde zwar schon öfters darüber diskutiert wie man Text aus einem File ausliest oder reinschreibt, aber ich habe nicht zu folgendem Problem gefunden:

Ich will aus einem Textfile bestimmte Zeilen auslesen.
Wie man das macht weiß ich.
Aber jetzt würde ich noch gerne von diesen bestimmten Zeilen nicht alles auslesen.

Z.B. steht im Textfile:

Name-Andi
Alter-22

Ich will nur Andi und die 22 auslesen.

Wie gehe ich da vor ?

Bis jetzt bekomme ich es nur so weit hin, das er mir die kompletten Zeilen ausliest.

Danke im Vorraus.

Gruß
Andi
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Andi123,

vermutlich willst du den Teil nach dem Bindestrich. Das geht mit String.IndexOf und String.Substring oder mit Regex.

herbivore
private Nachricht | Beiträge des Benutzers
DjBepy
myCSharp.de - Member



Dabei seit:
Beiträge: 209

beantworten | zitieren | melden

Servus!

Also, mit RegEx läßt sich das schon lösen . . .sieht etwa so aus:


using System.Text.RegularExpressions;

Regex MyRegex = new Regex("[-][0-9a-zA-Z]*");
				string WasDaRausKommt = MyRegex.Match(UrsprungsZeile);

WasDaRausKommt = WasDaRausKommt.Remove("-");

Die RegEx heißt, es muss ein "-" kommen & dannach ein Zeichen von 0-9, a-z, A-Z. Das * steht für beliebige Anzahl.

Du kannst anstelle von [0-9a-zA-Z] auch ein \w nehmen . . . das steht für eben den Audruck + Satz- & Sonderzeichen . . . ein "." würde für jedes beliebeige Zeichen stehen . . .
*Machts gut und danke für den vielen Fisch*
private Nachricht | Beiträge des Benutzers
Andi123
myCSharp.de - Member



Dabei seit:
Beiträge: 26

Themenstarter:

beantworten | zitieren | melden

Hi,
danke für die Antworten.

Wie macht man es aber, wenn man in der bestimmten Zeile ab dem Buchstaben 5 einlesen will bis ende der Zeile.
Also z.B.

Hallo Andi 22


Ich will Andi 22 einlesen.

Gibt es da auch eine Möglichkeit?

Danke & Gruß
Andi
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Andi123,

wir haben ja schon aufgezeigt, wie du an den gewünschten Teil kommst. Vorher musst du natürlich die Zeile als ganzes einlesen.

herbivore
private Nachricht | Beiträge des Benutzers
Andi123
myCSharp.de - Member



Dabei seit:
Beiträge: 26

Themenstarter:

beantworten | zitieren | melden

Ich lese folgende Zeile ganz ein:

NAME=P0706_diplomfeier

und habe sie dann als string vorliegen.

Mein string heißt a1

Danach will ich NAME= etfernen, so das ich nur noch P0706_diplomfeier im string stehen habe.

So funktioniert es nicht:

Regex MyRegex = new Regex("[=][*.*]*");
string WasDaRausKommt = MyRegex.Match(a1);

WasDaRausKommt = WasDaRausKommt.Remove("Name");

Was mache ich falsch ?

Fehlermeldung:
Fehler 1 Eine implizite Konvertierung vom Typ "System.Text.RegularExpressions.Match" in "string" ist nicht möglich.


Gruß & Danke
Andi
private Nachricht | Beiträge des Benutzers
DjBepy
myCSharp.de - Member



Dabei seit:
Beiträge: 209

beantworten | zitieren | melden

Sorry, mein Fehler . . . muss:

string WasDaRausKommt = MyRegex.Match(a1).ToString();

heißen!

Übrigens, wenn DU weißt, das da NAME= raus soll . ..dann mach doch direkt .Remove("NAME=") . . .
*Machts gut und danke für den vielen Fisch*
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Andi123,

wenn du es mit Regex machen willst, musst du dir wohl noch etwas die Syntax für reguläre Ausdrücke angucken. In diesem einfachen Fall kannst du es aber auch mit String.IndexOf und String.Substring machen.

Das ganze ist wirklich nicht schwer. Du solltest dich da selber durchbeissen.

herbivore
private Nachricht | Beiträge des Benutzers
Andi123
myCSharp.de - Member



Dabei seit:
Beiträge: 26

Themenstarter:

beantworten | zitieren | melden

Ja ok danke.

Werde mich weiter mit befassen.


Wenn trotzdem jemand noch einen Tipp für mich hat, kann er ihn ja noch schreiben.

DANKE

Gruß
Andi
private Nachricht | Beiträge des Benutzers