Wie kann eine Java-Methode aussehen, die die vorstehenden Zahlen in einem String entfernt?
Angenommen, ich habe einen String, der lautet: "1220 Lady Gaga - Born This Way".
Nun soll die Methode alle Ziffern und das Leerzeichen am Anfang entfernen.
Ich habe überlegt, mir mit
indexOf(" ")
den Index geben zu lassen, wo sich das Leerzeichen befindet und dann würde ich das im nächsten Schritt bis dahin löschen. Nur weiß ich leider nicht, wie das geht.
Weitere Beispiele:
Aus "35 Pitbull - Hey Baby" soll "Pitbull - Hey Baby" werden. Aus "1700 Nana - Lonely" wiederum "Nana - Lonely".
2 Antworten
Hallo, also wenn du das mit indexOf lösen willst, dann erhältst du ja den Index des ersten Leerzeichen. Anschließend lässt du dir einfach den substring von diesem Index bis zum Ende geben:
String s = "1700 Hallo - Apfel";
int index = s.indexOf(" ");
s = s.substring(index+1); // index + 1, da der index das
// Leerzeichen ist und du aber
// nach dem Leerzeichen weiter willst
substring(beginIndex) liefert also alles ab dem Index.
Es entfernt nicht alle Leerzeichen. Es entfernt nur die Stelle, bei der Verschieden viele Ziffern gefolgt von einem Leerzeichen sind.
Im Beispiel: "1700 Hallo45 - Apfel" würde mit "[0-9]+ " das "1700 " und sogar das "45 " entfernt.
Besser ist hier also der regex "^[0-9]+ ", der matcht Ziffern und Leerzeichen am Zeilenanfanf, also der würde nur "1700 " entfernen.
Regex sind ne ziemlich coole Sache, lohnt sich mal anzuschauen
Du könntest z.b. recursive prüfen, ob ein String mit einem Buchstaben beginnt,
wenn nicht, das erste Zeichen abschneiden und repeat.
die Strings fangen alle mit Zahlen an, die entfernt werden sollen.
Hier eine funktionierende Testmethode:
public class Main
{
public static void main(String[] args)
{
System.out.println(removeNon("35 Pitbull - Hey Baby"));
}
private static String removeNon(String string) {
if( Character.isDigit(string.charAt(0)) )
return removeNon(string.substring(1));
else
return string.trim();
}
}
Wenn du weißt, dass nur am Anfang Zahlen und Leerzeichen sind, dann kannst du auch mit replaceAll und Regex einfach ersetzen: