Avatar billede rajs Nybegynder
21. januar 2003 - 23:08 Der er 2 kommentarer og
1 løsning

Få string ud af fil med tokenizer (efter en række tal)

Hvis nu jeg har en tekstfil indeholde følgende:

0,0,0,0,1,1,2,0|0,0,0,2,1,1,2,0|0,0,0,0,0,0,0,1|1,1,2,0,2,0,0,1#hejsa

og jeg gerne vil have fat på den sidste string, hvordan får jeg fat i den? samtidig med den også skriver tallene? de skal nemlig skrives til 2 forsk. variabler.
Tal og Tekst.

På forhånd tak! :)
Avatar billede arne_v Ekspert
21. januar 2003 - 23:25 #1
Hvis du kender antal tal er det nemt:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class ReadCSV {
    public static void main(String[] args) {
        try {
            BufferedReader r = new BufferedReader(new FileReader("C:/test.csv"));
            String line;
            while((line = r.readLine()) != null) {
                System.out.println("line=" + line);
                StringTokenizer st = new StringTokenizer(line, ",|#");
                int num;
                System.out.print("numbers=");
                for(int i = 0; i < 32; i++) {
                    num = Integer.parseInt(st.nextToken());
                    System.out.print(" " + num);
                }
                System.out.println();
                System.out.println("string=" + st.nextToken());
            }
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
        }
    }
}
Avatar billede arne_v Ekspert
21. januar 2003 - 23:46 #2
Her er en version som siger at et token er et tal hvis det starter
med et tal ellers er det en streng:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class ReadCSV {
    public static void main(String[] args) {
        try {
            BufferedReader r =
                new BufferedReader(new FileReader("C:/test.csv"));
            String line;
            while ((line = r.readLine()) != null) {
                System.out.println("line=" + line);
                StringTokenizer st = new StringTokenizer(line, ",|#");
                int num;
                String s;
                while (st.hasMoreTokens()) {
                    s = st.nextToken();
                    if (Character.isDigit(s.charAt(0))) {
                        num = Integer.parseInt(s);
                        System.out.println("number=" + num);
                    } else {
                        System.out.println("string=" + s);
                    }
                }
            }
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
        }
    }
}
Avatar billede arne_v Ekspert
22. januar 2003 - 00:01 #3
Eller hvis man vil checke om alle tegn er tal:

package test;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class ReadCSV {
    public static void main(String[] args) {
        try {
            BufferedReader r =
                new BufferedReader(new FileReader("C:/test.csv"));
            String line;
            while ((line = r.readLine()) != null) {
                System.out.println("line=" + line);
                StringTokenizer st = new StringTokenizer(line, ",|#");
                int num;
                String s;
                while (st.hasMoreTokens()) {
                    s = st.nextToken();
                    if (isAllDigits(s)) {
                        num = Integer.parseInt(s);
                        System.out.println("number=" + num);
                    } else {
                        System.out.println("string=" + s);
                    }
                }
            }
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
        }
    }
    private static boolean isAllDigits(String s) {
        for (int i = 0; i < s.length(); i++) {
            if (!Character.isDigit(s.charAt(0))) {
                return false;
            }
        }
        return true;
    }
}
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