| 

.NET C# Java Javascript Exception

1
Hallo,
ich bin gerade dabei mit regex rumzuwerkeln :-).

Datei sieht so aus:
123|Hans|Mustermann|12.07.1989
321|Max|Müller|15.01.1976

Ich brauche nur:
123 und 321 aus der jewieligen Zeile.

Wie kann ich mit regex alles nach diesem Zeichen " | " entfernen? Ich raffs einfach nicht.

Vielen dank

Spicejam
News:
29.03.2011
spicejam 853 2 6
4 Antworten
1
Dazu braucht es keinen Regex:
dim meinString as String = "123|Hans|Mustermann|12.07.1989"
dim firstColumn as String = meinString.Split("|"c).First()
29.03.2011
m.fuchs 1,8k 2 8
Fall mir doch nicht so in den Rücken. Ich hab doch gerade geschrieben, das sicher gleich jemand mit einem Regex-Ausdruck hier vorbeikommt :)
Jens Duczmal 29.03.2011
Soll er doch kommen ;)
m.fuchs 29.03.2011
Top! Vielen dank, ich wusste gar nicht das, dass mit einem split so easy möglich ist. Und das derbe ist, die Anwort kam ja in Sekunden.
spicejam 29.03.2011
3
Mit RegEx kann ich leider nicht weiterhelfen, aber da kommt sicher gleich eine Antwort.

Ich wollte aber dennoch anregen, vielleicht nicht mit Kanonen auf Spatzen zu schiessen.
Du kannst ja wahlfrei die linken 3 Zeichen nehmen oder alle Zeichen links vom ersten |.

Dim noRegex as String = "123|Hans|Mustermann|12.07.1989"
Dim result = noRegex.Substring(0,noRegex.IndexOf("|"))

Ich halte das für performanter als reguläre Ausdrücke. Manchmal sieht man aber den Wald vor lauter Bäumen nicht, und rennt sich fest.
29.03.2011
Jens Duczmal 2,6k 1 3 9
Auch eine stringfunc. Mensch ich habe mal wieder zu kompliziert gedacht! Vielen dank.
spicejam 29.03.2011
1
Da muss ich mich jetzt auch noch dazumengen:

Wenn wir schon in VB sind, warum also nicht VB machen lassen:

Dim noRegex As String = "123|Hans|Mustermann|12.07.1989"
Dim result = Val(noRegex)


Falls result als String gebraucht wird, .ToString()
29.03.2011
nabuchodonossor 1,3k 5
Ach du sch...., dass gibts doch nicht. Perfekt! Ich denke ich werde zwei Funktionen parallel laufen lassen um wirklich keine Fehler reinzubekommen. Traumhaft :)
spicejam 29.03.2011
1
Hier der RegEx-Ausdruck:

^(\d*?)\|

Erklärung:

' Assert position at the start of the string «^»
' Match the regular expression below and capture its match into backreference number 1 «(\d*?)»
' Match a single digit 0..9 «\d*?»
' Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
' Match the character "|" literally «\|»


Verwendung:

Dim RegexObj As New Regex("^(\d*?)\|", RegexOptions.Multiline)
29.03.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
Und eine RegEx- lösung hinterher, danke Floyd!
spicejam 29.03.2011
Keine Ursache. Dachte es könnte wenn trotzdem noch interessieren.
Floyd 29.03.2011

Stelle deine .net-Frage jetzt!