Avatar billede wonderboy1 Nybegynder
27. maj 2001 - 01:56 Der er 5 kommentarer og
2 løsninger

Opdeling af filnavn indlæst fra fil. ??

Hej !

Er der nogen der har en idé/metodenavn til hvordan jeg kan dele navnene op på en række filnavne hentet ind med ListFiles(). Filnavnene ligger i en array og skal splittes op eks: \"beatles - Here comes the sun.mp3\"
skal blive til et array med \"beatles\" og et array med \"Here comes the sun\"

Man går udfra at \"-\" bindestregen er med i filnavnet så man evt. kan bruge dem som adskiller e.l. og at man måske kan skære \".mp3\" væk.

Menningen er at opdele kunster og titel inden det skal smides ind i en DB.
Avatar billede logical Nybegynder
27. maj 2001 - 08:21 #1
File f = ...


String name = f.getName();

// remove extension
String name = name.substring(0,name.lastIndexOf(\'.\'));
System.out.println(\"Name without extension = \" + name);

// Split line at - or at .
StringTokenizer st = new StringTokenizer(\"-.\");
String firstPart = st.nextToken();
String secondPart = st.nextToken();
.. // etc. until st.hasMoreTokens() == false

Hvis du laver en mp3 afspiller, er der i headeren på en mp3 fil oplysninger om kunstnernavn, titel etc. Du kan evt. bruge disse oplysninger i stedet.
(Find præcis header på nettet)
Avatar billede wonderboy1 Nybegynder
27. maj 2001 - 20:03 #2
(1)Hej ! jeg har fået begge dine foreslag til at virke, men jeg kan kun finde ud af at få printet de adskilte tokens. Det jeg skal have er to arrays returneret med hver deres token i så de begge ligger eks. på plads 0 i hver deres array så jeg kan bruge det 0 som reference når de skal ind i databasen. Min (pseudokode ser ud som følger) kan du hjælpe mig på vej ??

    public String[] splitFil(String navn)
    {
       
    StringTokenizer st = new StringTokenizer(navn, \"-.\");
    while(st.hasMoreTokens())
    {
        String[] Kunster = st.nextToken();
        String[] Titel = st.nextToken();
   
    }   
   
    return Kunster[] og Titel[];
       
    }

(2) når man skiller tokens ad kommer det ud sådan her:

beatles
her comes the sun

dvs. med mellemrum foran det andet token. kan man trimme dette mellemrum væk på en smart måde ?

P.S. det er ikke en mp3-afspiller jeg laver bare en database og eks. musik som man så senere skal kunne slå op og søge i eks. via JSP!
Avatar billede trolle Nybegynder
28. maj 2001 - 14:56 #3
(2) trimme:
  String s=\" e \";
  s.trim();
s er nu blevet til \"e\"
Avatar billede trolle Nybegynder
28. maj 2001 - 15:06 #4
(1) opdeling til array

public void splitFil(String navn,int plads){
  StringTokenizer ST = new StringTokenizer(navn,\"-.\")
  try{
    Kunstner[plads] = st.nextToken();
    Titel[plads] = st.nextToken();
  }catch(Exception e){
    System.out.println(\"Der er noget galt med fil navnet: \"+e);
  }
}

Array Kunstner og Titel skal så begge være field variabler, og du kan evt. have to metoder der retunere disse, hvis de skal haves fra en anden klasse.
Læg mærke til, at metoden ikke tager hensyn til \'plads\' variablen er for stor. Dette skal gøres andetsteds!
Avatar billede trolle Nybegynder
28. maj 2001 - 15:42 #5
ups...

(2) trimme:
  String s=\" e \";
  s = s.trim();
s er nu blevet til \"e\"

Avatar billede wonderboy1 Nybegynder
28. maj 2001 - 23:00 #6
Tak for hjælpen, er det ok hvis jeg fordeler pointene lige i mellem jer. ?
Avatar billede trolle Nybegynder
29. maj 2001 - 12:39 #7
Det er fint med mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester