2016-04-29 10 views
-1

助けてください、 シリアルデータから受信したデータをデータテーブルに変更する方法、私はデータを分割する問題があります。シリアルから
データ:どのように分割とJavaでデータを解析

 
    && 
    1301830000 
    13020 
    130 313 
    130432803 
    1305160420 
    1306155033 
    130 735 
    1308746.119995 
    1309738.062073 
    !! 
    && 
    1401830000 
    14020 
    140 314 
    140432803 
    1405160420 
    1406155033 
    140 735 
    1408746.119995 
    !! 

データ "& &" が先行で終わるされる "!!"。マーク間のデータをデータテーブルに変換する。最初の2桁は例えば、私は次の桁を変更するには開始したい、インデックスデータを受信して​​いる:それ

 
     col0 col1 
row0 830000 0 

作る

 
    && 
    1301830000 
    13020 
    !! 
 
13 index data. 01 rows and columns. 830000 value 
13 index data. 02 rows and columns. 0  value 

おかげ

+1

あなたのデータは壊れていますか、それとも本当に '130 313'ですか、データの4行目では '130313'ですか?他の3行で同じ – Turo

答えて

0

私は正確ではありませんよ問題が開始/停止マーカーの間の行を解析する方法であるかどうか、または問題が個々の行を解析している場合は、以下のコードを開始する必要があります。

私は文字列の変換を気にしませんでした。

public static void main(String args[]) throws IOException { 

    String input = " &&\n" + 
      " 1301830000\n" + 
      " 13020\n" + 
      " 130 313\n" + 
      " 130432803\n" + 
      " 1305160420\n" + 
      " 1306155033\n" + 
      " 130 735\n" + 
      " 1308746.119995\n" + 
      " 1309738.062073\n" + 
      " !!\n" + 
      " &&\n" + 
      " 1401830000\n" + 
      " 14020\n" + 
      " 140 314\n" + 
      " 140432803\n" + 
      " 1405160420\n" + 
      " 1406155033\n" + 
      " 140 735\n" + 
      " 1408746.119995\n" + 
      " !!\n"; 

    try (BufferedReader r = new BufferedReader(new StringReader(input))) { 
     String line; 
     while((line = r.readLine()) != null) { 
      line = line.trim(); 
      if (line.startsWith("&&") || line.startsWith("!!")) { 
       continue; 
      } else { 
       String indexData = line.substring(0, 2); 
       String rowsColumns = line.substring(2, 4); 
       String value = line.substring(4); 
       System.out.println(String.format("%2s index data. %3s rows and columns. %6s value ", indexData, rowsColumns, value)); 
      } 
     } 
    } 
} 
関連する問題