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
Straße und Hausnummer trennen?
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 315
Herkunft: Deutschland

Themenstarter:

Straße und Hausnummer trennen?

beantworten | zitieren | melden

Hallo,

ich möchte die Straße und die Hausnummer trennen. Grundlegend habe ichs auch, aber recht umständlich. Ich schaue zuerst, ob ein Punkt drin ist, wenn ja, splitte ich am Punkt. Das ist einfach. Dann kommt der Teil mit Leerzeichen. Hier habe ich Probleme.

Ich schaue zuerst nach dem letzten Leerzeichen uns splitte dann dort. Das Klappt aber nicht für Muster Gasse 1 a, da dann die Hausnummer das "a" wäre. Wie könnte ich vorgehen?

Danke
private Nachricht | Beiträge des Benutzers
lp8266
myCSharp.de - Member

Avatar #avatar-2607.jpg


Dabei seit:
Beiträge: 17
Herkunft: Leipzig

beantworten | zitieren | melden

Such mal nach Regex (regular expression), dass könnte dir helfen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von lp8266 am .
private Nachricht | Beiträge des Benutzers
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 315
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Dachte ich auch dran, aber wie genau?

Danke
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

beantworten | zitieren | melden

Ich geh mal davon aus, daß zwischen Straße und Hausnummer mindestens eine Leerstelle liegt...

(?<strasse>.*?)\s+(?<hausnr>\d+\s*.*)

... und ich geh mal davon aus, daß du die Verwendung regulärer Ausdrücke in C# nicht kennst:


            Match tMatch = Regex.Match(t_AdresseStrHNr, @"(?<strasse>.*?)\s+(?<hausnr>\d+\s*.*)");

            if(tMatch != null)
            {
                        string t_Strasse = tMatch.Groups["strasse"].Value;
                        string t_HausNr = tMatch.Groups["hausnr"].Value;
            }

t_AdresseStrHNr musst du natürlich vorher entsprechend füllen. Sehr beispielhafter Code.

Eigentlich ist es unsauber, t_Strasse und t_HausNr in dem if-Block anzulegen... man kann natürlich auch, wenn tMatch == null ist, irgendwie aus der Funktion aussteigen... naja, soll ja auch nur das Prinzip verdeutlichen...
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von 7.e.Q am .
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3777
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Folgende Adresse gibt es :

Hauptstraße 17
Hauptstraße 17a
Hauptstraße 17 b
Hauptstraße 17 B1
Hauptstr.17
Hauptstraße 10 App. 123
Hauptstraße 17 1.Stock
Hauptstraße 17 2. Stock
An der Schleuse 18

Viel Spass beim Herausfinden was nun die Hausnummer ist.

Grüße Bernd
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von BerndFfm am .
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 315
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Funktioniert bestens! Danke
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

beantworten | zitieren | melden

Also meine Variante funktioniert mit

Hauptstraße 17
Hauptstraße 17a
Hauptstraße 17 b
Hauptstraße 17 B1
An der Schleuse 18

soweit einwandfrei... man könnte das Muster sicherlich entsprechend der anderen Varianten anpassen.
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3777
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Hallo Seven e.Q.,

Klasse !

Werde ich auch gleich mal testen.

Danke

Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
robert.wachtel
myCSharp.de - Member

Avatar #avatar-2287.gif


Dabei seit:
Beiträge: 334
Herkunft: Köln

beantworten | zitieren | melden

Zitat von BerndFfm
Viel Spass beim Herausfinden was nun die Hausnummer ist. [...]
Da habe ich noch ein paar nette:

Sallweg 1-3a Haus 1 R8
An die 2. Scharte
M3

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von robert.wachtel am .
Robert Wachtel

http://blog.robertsoft.de
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

beantworten | zitieren | melden


(?<strasse>.*?)[\s+\.](?<hausnr>\d+\s*.*)

funktioniert nun auch mit

Hauptstr. 17
Hauptstr.17
Hauptstr. 17 b
Hauptstr. 17b
Hauptstr.17 b
Hauptstr.17b
Haupt Str. 17
Haupt Str.17
Haupt Str. 17b
und so weiter...

Wobei der Punkt dann nicht mehr zum Straßennamen gehört.

(?<strasse>.*?\.*)\s*(?<hausnr>\d+\s*.*)

damit gehört der Punkt dann auch zum Straßennamen.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von 7.e.Q am .
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3777
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Das grenzt ja schon an AI (Künstliche Intelligenz).

;-)

Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

beantworten | zitieren | melden

Zitat von BerndFfm
Das grenzt ja schon an AI (Künstliche Intelligenz).

;-)

Grüße Bernd

Nicht wahr?!
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3358
Herkunft: Berlin

beantworten | zitieren | melden

Noch ein paar Vorschläge zur Erweiterung der KI:

Straße 523 Nr. 18 oder
Str. 523 Haus 18
Straße F 4 oder
Straße F Nr. 4
Str. d. 17. Juni 135
M3 (von Robert Wachtel) mit Hausnummer als:
M3, 18 oder
M3 Nr. 18 oder
M 3 Haus 18
Weg 0 Nr. 18 (gibt es wirklich mit Null)
Weg B Nr. 18

Gruß Jürgen
private Nachricht | Beiträge des Benutzers
kruegge
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Ich habe es selbst versucht umzudrehen für Ausländische Adressen aber es will nicht ganz passen....

Ich setze bei mir vorraus das die Hausnummer immer kürzer ist als die Strasse und wenn das nicht so ist würde ich das regex gerne umdrehen, komme aber nicht ganz zum erfolg.
(?<hausnr>\d+\.*)\s*(?<strasse>.*?\.*.*)

zb Frankreich, USA usw haben die Hausnummer oft vorne...
Wer kann helfen?
LG Kruegge
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

beantworten | zitieren | melden

Uaaah, Zombiethreadapokalypse! :-D

Ich bin mir nicht sicher, ob's eine on-fits-all Lösung dafür gibt. Aber wahrscheinlich irgendwas mit look-ahead. Ich bin auch schon eine Weile raus aus diesem Thema. So... ca... 12 Jahre.
private Nachricht | Beiträge des Benutzers
kruegge
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

muss nicht all in one sein, mir für die ober lösung schon reichen, wenn es sauebr funktioniert ds die Hausnummer zuerst steht...
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

beantworten | zitieren | melden

Ich kann keine Frage in Deinen Beiträgen erkennen. Sollen wir Dir den Regex anpassen, oder wie?

Wenn ich Google-Suche nach regex us address zeigt Google sofort folgenden Vorschlag vor:
^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$

Alternativ regexlib - Street
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
kruegge
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

ja ds wäre sehr hilfreich wenn du mir helfen könntest deinen regex umzudrehen, einfach nur das die kombinationen funktuonieren, wenn die Hausnummer vorne steht., weil das auf viele Länder zutrifft und bei meinem versuch klappt das nicht 100%ig.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1892
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Der RegEx sucht bereits am Anfang nach der Hausnummer, daher auch der hinweis auf die US Suche von Abt.

Wenn du einen spezifischen RegEx suchst, dann such bei Google selbst.
Für eine saubere Umsetzung müsstest du auch pro Land den richtigen RegEx nutzen, da einfach nach Hausnummer vorne oder hinten, kein sinnvoller Ansatz ist um die Adressen richtig zu parsen.

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers