Java String zerlegen und führenden Spaces entfernen

Tr3x

Lieutenant
Registriert
Feb. 2007
Beiträge
638
Hallo,

ich versuche grad einen übergebenen string(filename) zu bearbeiten. Dieser soll Author und Interpret in zwei unterschiedlichen Attributen speichern.

° = leerzeichen
zb. "°°Falco°°°-°°Rock°Me°°°.EXTENSION" in "Falco" "Rock°Me"

bisher kam ich auf folgende Idee, einfach nach dem °-° suchen und davon einfach den vorderen bzw hinteren teil speichern.
dannach einfach mit der trim-methode die leerzeichen. aber leider klappt das irgendwie nicht. ich bekomme in exlipse ständig ein out of range = -1 in der zeile von author=substring. hab ich da irgendwie einen denkfehler?

Code:
 int i = filename.indexOf(" - ");         
        
        author = filename.substring(0, i);
        title = filename.substring(i+3);
        
        author = author.trim();
 
Zuletzt bearbeitet:
Vll hast du eine Datei "Interpret-Song.extension" so das er keinen Trennpunkt finden kann;
Rückgabewert "-1" heisst meist konnte nicht verarbeiten;

Ich würde auch nur nach "-" suchen lassen und splitten; Vll. Hilft hier das auch noch weiter; Aber du hast ja schon so gut wie alles;
 
ja das problem ist das es ja einige dateien gibt, die im author oder im title selbst auch einen - haben. und da sich der trennstrich von author und title sich ja nur noch wegen einem leerzeichen vor und nach dem - unterscheiden, wird es etwas schwierig
 
Hast du schon mal mit der Regexe für die split Methode rumgespielt? Sollte sich damit ja auch abdecken lassen. ;)
 
ich arbeite gerade daran

Code:
String filename = "     A.U.T.O.R    -     T.I.T.E.L   .EXTENSION";
        String author = "";
        String title = "";
                
        String[] split = filename.split(" - ");
        author = split[1];
        title = split[2];
        
        author = author.trim();
        title = title.trim();
        
    
        System.out.println(title);
     
        System.out.println(author);

und wieder ein
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at test.main(test.java:12)
 
-1 heißt, es wurde kein Treffer für " - " gefunden...

Und ein 2er-Array hat die Indicies 0 und 1 und nicht 1 und 2...
 
ach ja 0 1 ja *facepalm* jo danke

Code:
 String[] split = filename.split(" - ");
        
        author = split[0];
        author = author.trim();
        
        title = split[1].substring(0, split[1].lastIndexOf(" - "));
        title = title.trim();

jetzt hab ich das so in meiner java datei. jetzt habe ich diesmal ein arrayindexoutofboundsexception: 1 und einne fehler bei title = split[1].substring(0, split[1].lastIndexOf("."));
 
Splitten nach Leerzeichen:

String[] splitArr = splitString.trim().split("\\s+");

Bei so einem String : "Author1 Titel1, Author2 -Titel2" bekommst du sowas:
[Author1, Titel1, ,Author2, -Titel2]

Eine Lösung wäre einfach in dem jeweiligen Array nach , oder - oder sonst was zu suchen und zu enfernen. Mit regulären ausdrücken wäre es evtl. eleganter.

Gruß
 
deine Dateiendung ist immer gleich lang, oder? Dann könntest du ja einfach die letzten (4?) Zeichen absägen und fertig.
 
nein meine dateiendungen sind unterschiedlich lang.
ich habs nun bis auf einen kleinen fehler hinbekommen. ich hoffe das ihr mir bei dem kleinen fehler noch helfen könnt.

bisher hab ich jetzt folgendest (ist jetzt die gesamte methode)

Code:
public void parseFilename(String filename) {
        
       int i = filename.length();
       if(i>0) {
        if(filename.contains(" - ")){
            String[] split = filename.split(" - ");
           
            author = split[0];
            title = split[1];
            
            author = author.trim();
            title = split[1].substring(0, split[1].lastIndexOf("."));
            title = title.trim();
            }
            else title = filename.substring(0, filename.lastIndexOf("."));
       } else title = filename;
    
        return;
    }

mein einziges problem ist das der zeiger auf author also auf das attribut null ist.
 

Anhänge

  • MediaPlayer.rar
    15,7 KB · Aufrufe: 274
Zuletzt bearbeitet:
Der Index ist ouf of bounds weil es keinen Treffer für " - " gibt... aber das hab ich im Grunde ja schon gesagt, als ich erklärt hab, warum beim anderen Code eine Ausnahme mit unglültiger index von -1 kam...

Und klar ist der Author null, wenn kein " - " vorkommt...
 
ah ok alle klar. dann vielen dank!
 
  • Gefällt mir
Reaktionen: madsk22
Hi,

das ist etwas länger her und zum Teil umgeworfen. Gibt es eine bestimmte Frage worauf du hinaus willst? Gerne auch eine PN
 
  • Gefällt mir
Reaktionen: KitKat::new() und madsk22

Ähnliche Themen

Antworten
18
Aufrufe
4.495
1
Zurück
Oben