ブライアン:
私は、行毎にファイルを摂取していますし、それぞれの行は下に見られるようなスペースで区切られた文字列のさまざまな数を持っています。これは、ファイルから単一の行です。ここエルパソのような予想外のスペースがあり、このラインの場合を除き、期待通りのコードは動作しますEL PASO*TX*K4
。私は、行ごとに文字列の固定数があった場合、各文字列に対して定義されたインデックスを使用しますが、そこではないと思います。一部の行に他の人が摂取するなど、多くの21のように文字列を持っているとして、数7のように文字列を持っています。いずれはどのように最善のハンドルにこのような状況の良いアイデアを持っていますか?
NAV3ELP VORTAC ALIBY*NM*K2 ANJIE*TX*K4 CINAG*TX*K4 EL PASO*TX*K4 FABAN*TX*K4 FANNY*TX*K4 FARCY*TX*K4 FEMOL*TX*K4 FIGMO*TX*K4 GIFEN*TX*K4 GREBE*NM*K2 HANCH*NM*K2 JIDEN*TX*K4 KEYLO*TX*K4 LINZY*TX*K4 NOCIG*TX*K4 NUQUH*TX*K4 PIERS*TX*K4 RIOWE*TX*K4 RISGE*TX*K4 RUTER*NM*K2
public Nav3Data parseRecord(String dataLine) {
// check record type
if(!dataLine.startsWith("NAV3")) return null;
Nav3Data theNav = new Nav3Data();
// parse Navaid ID
theNav.setNavaidID(dataLine.substring(NAVAID_ID_START_IDX, NAVAID_ID_END_IDX).trim());
// parse fixes
String[] fixes = dataLine.substring(FIX_IDS_START_IDX, FIX_IDS_END_IDX).split("\\s+");
theNav.setFixIDs(fixes);
return theNav;
}
デジタル・ノイズ:
2つのスペース以上に分割します:
dataLine.substring(FIX_IDS_START_IDX, FIX_IDS_END_IDX).split("\\s{2,}")