ich suche zur Zeit eine Lösung um eine Adresse in Straße und Hausnummer zu splitten.
Als Beispiel sei gegeben:
Haupt Strasse 15b
Diese soll nun nach "Haupt Strasse " gesplittet werden, so das "15b" übrig bleibt.
Meine Lösung wäre:
String [] feld1 = LettersNumbers.split("[ .]");
String Ergebnis =feld1[feld1.length-1];
return Ergebnis;
Dies geht zwar, aber sobald der Fall vorliegt Haupt Strasse15b (Falsche Usereingabe, die abgefangen werden soll) geht das nicht mehr. Nun suche ich nach einer Funktion, die den String ab dem Wechsel zu Zahlen splittet.
Das geht mittels Regulärem Ausdruck (die java.lang.String.split(...) hast du ja schon gefunden);
ich persönlich steh' aber mit selbigen auf Kriegsfuß.
Eine sonstige fertige Methode kenn' ich nicht, müsste man wohl selbst programmieren.
Du sprichst von falschen Usereingaben die abgefangen werden soll. Spricht etwas dagegen das Feld in 2 aufzuteilen? Eines für die Straße/Platz/Gasse und eines für die Hausnummer?
Du könntest das Literal auch einfach auf Ziffern prüfen , und falls die aktuelle stelle eine Ziffer ist und kein Buchstabe, dann eben splitten , dann hast du das Problem mit der falschen Eingabe nicht, oder du sorgst nach Bestätigung der Eingabe selbst für die gewünschte Formatierung ( z.B durch hinzufügen eines Leerzeichens an gewünschter stelle) und parst dann erst die Eingabe.
Du könntest das Literal auch einfach auf Ziffern prüfen , und falls die aktuelle stelle eine Ziffer ist und kein Buchstabe, dann eben splitten , dann hast du das Problem mit der falschen Eingabe nicht, oder du sorgst nach Bestätigung der Eingabe selbst für die gewünschte Formatierung ( z.B durch hinzufügen eines Leerzeichens an gewünschter stelle) und parst dann erst die Eingabe.
for(int i =0; i <LettersNumbers.length(); i++)if(Character.isDigit(LettersNumbers.charAt( i ))){StringErgebnis=LettersNumbers.substring(i);}returnErgebnis;
Hier mal unter verwendung eines Stringbuilders als Beispiel, ginge auch mit einem StringTokenizer oder oder oder :rtfm:
Java:
publicclassFoo{publicstaticStringcheckForDigit(String input){char[] in = input.toCharArray();StringBuilder builder =newStringBuilder();for(int i =0; i < in.length; i++){if(Character.isDigit(in[i])){
builder.append(in[i]);}}return builder.toString();}publicstaticvoidmain(String[] args){System.out.println(Foo.checkForDigit("Ich bin ein toller input mit Ziffern234234"));}}
Hier mal unter verwendung eines Stringbuilders als Beispiel, ginge auch mit einem StringTokenizer oder oder oder :rtfm:
Java:
publicclassFoo{publicstaticStringcheckForDigit(String input){char[] in = input.toCharArray();StringBuilder builder =newStringBuilder();for(int i =0; i < in.length; i++){if(Character.isDigit(in[i])){
builder.append(in[i]);}}return builder.toString();}publicstaticvoidmain(String[] args){System.out.println(Foo.checkForDigit("Ich bin ein toller input mit Ziffern234234"));}}