以下は、非常に大きなファイルの抜粋です。
それぞれの名前と値 ( Name(x ) 行とValue(x)行) を Array または List 型の要素に取得し、その間に "=" を挿入する方法を探しています。
つまり、各要素を " 'name' = 'value' " のようにします。
[Device|EEP_FEATUREKOI_HFS_Max|Kostia]
--------------------------------
Name(1) = partHeader_A01
Value(1) = 0x10
Desc(1) = (Address 0x000) Article No. / P.C.B No Byte 1
Name(2) = partHeader_A02
Value(2) = 0x9
Desc(2) = (Address 0x001) Article No. / P.C.B No Byte 2
Name(3) = partHeader_A03
Value(3) = 0x95
Desc(3) = (Address 0x002) Article No. / P.C.B No Byte 3
Name(4) = partHeader_A04
Value(4) = 0x38
Desc(4) = (Address 0x003) Article No. / P.C.B No Byte 4
----------------------------------
Name(12) = AdrIctPcbTestDate_Day
Value(12) = 0xFF
Desc(12) = (Address 0x00B) Test Date : Day
---------------------------------
Name(13) = AdrIctPcbTestDate_Month
Value(13) = 0xFF
Desc(13) = (Address 0x00C) Test Date : Month
---------------------------------
Name(14) = AdrIctPcbTestTime_Hour
Value(14) = 0xFF
Desc(14) = (Address 0x00D) Test Time : Hour
---------------------------------
Name(15) = AdrIctPcbTesTime_Minute
Value(15) = 0xFF
Desc(15) = (Address 0x00E) Test Time : Minute
これまでのところ、名前と値を取得できます。私の問題は、セクションに複数のバイト (名前に「_」で示されている) がある場合、すべてのバイト値を同じ要素に名前を 1 つだけ配置する必要があることです。
これを正しく機能させるための適切なアルゴリズムを理解できません。
つまり、partHeaderArtLK_A01からpartHeaderArtLK_A04までの場合、
partHeaderArtLK_A01 = 10
partHeaderArtLK_A02 = 09
partHeaderArtLK_A03 = 95
partHeaderArtLK_A04 = 38
要素は次のようになります
partHeaderArtLK = 10 09 95 38 .
(注: わかりやすくするために破線の区切り記号を挿入しました。実際のファイルには存在しません (また、存在することもできません)。)
これまでの私の試みは次のとおりです。
if (line.contains("Name")&& line.contains("_")) {
String basicName = line;
cutName = basicName.split("=")[1].trim();//get substring after '='
cutName = cutName.substring(0,cutName.lastIndexOf("_"));//removes '_'?
importantName.add(i, (cutName + " = "));//add to element i
System.out.println("Line reads: " + basicName);
System.out.println("Part: " + cutName);
do{
if (line.contains("Value")) {
Hex = line.split("=")[1].trim();//get substring after '='
importantNumber.add(i, Hex);//get substring after '='
System.out.println("Value: " + Hex);
}//end if
}while(!"Value".contains(line = reader.readLine()));
while (!placeToFinish[i].equals(line = reader.readLine()));
}else
if(line.contains("Name")) {
String basicName = line;
cutName = basicName.split("=")[1].trim();//get substring after '='
importantName.add(i, (cutName + " = "));//get substring after '='
System.out.println("Line reads: " + basicName);
System.out.println("Part: " + cutName);
System.out.println("Number: " + importantNumber.indexOf(i) + "\n");
do{
if (line.contains("Value")) {
Hex = line.split("=")[1].trim();//get substring after '='
importantNumber.add(i, Hex);//get substring after '='
}//end if
}while (!"Value".contains(line = reader.readLine()));
while (!placeToFinish[i].equals(line = reader.readLine()));
}//end if
完全なコードへのリンクは次のとおりです: http://justpaste.it/d3u0
すべてのアルゴリズムまたはコードを高く評価します。
前もって感謝します!