Adresse und Hausnummer mit regular expression

MaximaxXx

Mitglied
Hallo zusammen,

ich stehe vor einem kleinen Problem.

Wir erfassen derzeit die Straße und Hausnummer in einem Feld. Dieser Umstand ist auch nicht veränderbar, da hier Aspkete des ERP System einspielen.

Jedoch benötige ich nun eine zuverlässige Möglichkeit um Straße und Hausnummer von einander zu trennen.

Hintergrund: Für die ERP Auftragsbearbeitung müssen Straße und Hausnummer in einem Feld erfasst werden, User Accounts hingegen besitzen 2 getrennte Felder.

Wichtig wäre dabei natürlich, dass unsere unterschiedlichsten deutschen Adressen zuverlässig klappen.
Code:
Straße 15
sollte genauso gut funktionieren wie
Code:
Straße des 17. Juni 12/c

Ich konnte bisher leider kein Java Ergebnis finden.

Grüße

Max
 
Hallo,

wenn bei den Eingaben der letzte Block immer die Hausnummer ist, und dieser Block immer zusammenhängt - also nicht "12 a" als Hausnummer sondern "12a" - dann könntest du über einen regulären Ausdruck die Zeile in 2 Teile zerlegen lassen: Anfang und letzer Block.

Was auch möglich wäre: Den String über split and den Leerzeichen trennen und dann das letzte Token als Hausnummer verwenden.

Gruß,
Wolf
 
Code:
    Pattern pattern = Pattern.compile("(\\w+)\\s(\\d+)"); \\w+=1 oder mehr Wortzeichen ([a-zA-Z]),\\d+=1 oder mehr  Ziffern, \\s = ein leerzeichen
    Matcher matcher = pattern.matcher("Straße 15");
    if(matcher.find()){
      System.out.println(matcher.group(1)); //Straße
      System.out.println(matcher.group(2)); // Hausnummer
    }

Bitte schön :)
 
Hi diel2001,

als Ergebnis meines Beispiels "straße des 17. Juni 12/c" bekomme ich nun

Code:
public static void main(String[] args) {
		String data = "Name der 18 Strase 25/5";
		Pattern pattern = Pattern.compile("(\\w+)\\s(\\d+)"); 
		//\\w+=1 oder mehr Wortzeichen ([a-zA-Z]),\\d+=1 oder mehr  Ziffern, \\s = ein leerzeichen
			    Matcher matcher = pattern.matcher("Straße des 17. Juni 12/c");
			    if(matcher.find()){
			      System.out.println(matcher.group(1)); //Straße
			      System.out.println(matcher.group(2)); // Hausnummer
			    }

	}
Code:
des
17



Code:
    Pattern pattern = Pattern.compile("(\\w+)\\s(\\d+)"); \\w+=1 oder mehr Wortzeichen ([a-zA-Z]),\\d+=1 oder mehr  Ziffern, \\s = ein leerzeichen
    Matcher matcher = pattern.matcher("Straße 15");
    if(matcher.find()){
      System.out.println(matcher.group(1)); //Straße
      System.out.println(matcher.group(2)); // Hausnummer
    }

Bitte schön :)
 
Das klappt für das Beispiel mit "Strasse 15", aber was ist bei komplizierteren Strassennamen wie "Straße des 17. Juni 12/c"? Da wird der Ausdruck wohl nicht mehr funktionieren.

Gruß,
Wolf
 
Selbst ohne das Datum dürfte der reguläre Ausdruck mit zum Beispiel "Carl-Friedrich-Gustav Str. 7a" Probleme haben, denke ich mal.
 

Neue Beiträge

Zurück