私はテキストファイルを扱っており、ファイルからfloat
とint
データを取得する必要があります。フィールド内のテキストファイルからデータを取得
これは私のテキストファイルの例です:
Total money: 800
ID: IT000323
Name: Steve
Age: 29
私はこれをどのように行うことができ、800,IT000323,Steve and 29
を取得する必要がありますか?
私はテキストファイルを扱っており、ファイルからfloat
とint
データを取得する必要があります。フィールド内のテキストファイルからデータを取得
これは私のテキストファイルの例です:
Total money: 800
ID: IT000323
Name: Steve
Age: 29
私はこれをどのように行うことができ、800,IT000323,Steve and 29
を取得する必要がありますか?
あなたは
以下のクラスを使用することができますpublic static void getProperties(String infile) throws IOException {
final int lhs = 0;
final int rhs = 1;
ArrayList list = new ArrayList();
BufferedReader bfr = new BufferedReader(new FileReader(new File(infile)));
String line;
while ((line = bfr.readLine()) != null) {
if (!line.isEmpty()) {
String[] pair = line.trim().split(":");
list.add(pair[rhs].trim());
}
}
bfr.close();
System.out.println(list.toString());
}
をそれはのような値を返します。
[800、IT000323、スティーブ、29]
文字列infileには、ファイルのパスが含まれます。たとえば、次のようにD:\ test.txtの
あなたはこのようなグループとの正規表現を宣言することができます。
"Total money: ([0-9]*) ID: (.*) Name: (.*) Age: ([0-9]*)";
次に、あなたはそれを持つ各ファイルの行と一致し、順番にすべてのグループを取得する必要があります。あなたは、少なくともJavaの7に
を使用している場合は、ちょうどあなたがこのような何かを行うことができますPattern APIを使用することができます。
try (Scanner sc = new Scanner("Total money: 800 ID: IT000323 Name: Steve Age: 29")){
sc.useDelimiter("((^|)[^\\:]+\\:)");
int money = sc.nextInt();
String id = sc.next();
String name = sc.next();
int age = sc.nextInt();
System.out.println("money: " + money + " id: " + id + " name: " + name + " age: " + age);
} catch (Exception e) {
e.printStackTrace();
}
あなたは[スキャナ]を見てみる必要がある – Palcente
利用スプリングバッチ(https://docs.oracle.com/javase/7/docs/api/java/util /Scanner.html)class – Titus
@Mazeは何もしません。どうすればいいのかわかりません:P、しかし私はフレーズを検索して次の単語を得ることができると思います。 – ToastMan