Я принимаю файл построчно, и каждая строка имеет различное количество строк, разделенных пробелом, как показано ниже. Это одна строка из файла. Код работает, как и ожидалось, за исключением случая этой строки, где здесь есть неожиданный пробел, как в El Paso: EL PASO*TX*K4
. Я бы использовал определенные индексы для каждой строки, если бы в строке было фиксированное количество строк, но их нет. В некоторых строках будет всего 7 строк, а в других - до 21 строки. У любого есть хорошая идея о том, как лучше всего справиться с этой ситуацией?
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;
}