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! :)
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) {
}
}
}
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) {
}
}
}
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;
}
}