Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
String ab dem Wechsel Buchstaben zu Zahlen splitten
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 ) ) ){
String Ergebnis = LettersNumbers.substring(i);
}
return Ergebnis;
Hier mal unter verwendung eines Stringbuilders als Beispiel, ginge auch mit einem StringTokenizer oder oder oder :rtfm:
Java:
public class Foo{
public static String checkForDigit(String input){
char[] in = input.toCharArray();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < in.length; i++) {
if(Character.isDigit(in[i])) {
builder.append(in[i]);
}
}
return builder.toString();
}
public static void main(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:
public class Foo{
public static String checkForDigit(String input){
char[] in = input.toCharArray();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < in.length; i++) {
if(Character.isDigit(in[i])) {
builder.append(in[i]);
}
}
return builder.toString();
}
public static void main(String[] args){
System.out.println(Foo.checkForDigit("Ich bin ein toller input mit Ziffern234234"));
}
}