-1

私は内容を含むテキストファイルを持っています:

26/09/2013,16:04:40 2412 -928.0
25/09/2013,14:24:30 2412 914.0

上記のファイルには、各行に日付、時刻、整数、倍精度が含まれています

読み込まれたデータを含むクラスを作成しました。

public class Entry{

    public String date, time;
    public int integerNumber;
    public double doubleNumber;

    public Entry(String d, String t, int n1, double n2){
        this.date=d;
        this.time=t;
        this.integerNumber=n1;
        this.doubleNumber=n2;
    }
}

上記のファイルを、配列内の各要素が各行のデータである Entry[] 配列に読み込む最良の方法は何ですか?

編集:私の現在の試みは、各行を文字列として読み取り、さまざまなデータの部分文字列を作成することです。たとえばString date=line.substring(0,10);、これは今のところ問題なく機能しますが、たとえば整数に到達すると、必ずしも4桁の数字になるとは限りません. 任意のサイズの数値を読み取る方法がわからないため、これは私を行き詰まらせます。

4

4 に答える 4

3

正規表現を使用してテキスト ファイルを読み取ることができます。

例えば、

String line = "001 John Smith";  
String regex = "(\\d)+ (\\w)+ (\\w)+";  
Pattern pattern = Pattern.compile(regex);  
Matcher matcher = pattern.matcher(line);  
while(matcher.find()){  

    String [] group = matcher.group().split("\\s");  
    System.out.println("First Name "+group[1]);  
    System.out.println("Last Name " +group[2]);  

}  
于 2013-09-26T20:15:18.813 に答える
2

さて、読んでいるファイルのすべての行が次の形式であることを保証できる場合

<date>,<time> <integer> <double>

このように読むことができます

String foo = "25/09/2013,14:24:30 2412 914.0";
String delims = "[, ]+";
String[] tokens = foo.split(delims);

String d = tokens[0]; // d would contain the string '25/09/2013'
String t = tokens[1]; // t would contain the string '14:24:30'
int n1 = Integer.parseInt(tokens[2]); // n1 would contain the integer 2412
double n2 = Double.parseDouble(tokens[3]); // n2 would contain the double 914.0
于 2013-09-26T20:08:26.617 に答える