2016-08-02 20 views
0

私はテキストファイルを扱っており、ファイルからfloatintデータを取得する必要があります。フィールド内のテキストファイルからデータを取得

これは私のテキストファイルの例です:

Total money: 800 
ID: IT000323 
Name: Steve 
Age: 29 

私はこれをどのように行うことができ、800,IT000323,Steve and 29を取得する必要がありますか?

+0

あなたは[スキャナ]を見てみる必要がある – Palcente

+0

利用スプリングバッチ(https://docs.oracle.com/javase/7/docs/api/java/util /Scanner.html)class – Titus

+1

@Mazeは何もしません。どうすればいいのかわかりません:P、しかし私はフレーズを検索して次の単語を得ることができると思います。 – ToastMan

答えて

1

あなたは

以下のクラスを使用することができます
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の

0

あなたはこのようなグループとの正規表現を宣言することができます。

"Total money: ([0-9]*) ID: (.*) Name: (.*) Age: ([0-9]*)"; 

次に、あなたはそれを持つ各ファイルの行と一致し、順番にすべてのグループを取得する必要があります。あなたは、少なくともJavaの7に

1

を使用している場合は、ちょうどあなたがこのような何かを行うことができます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(); 
} 
関連する問題