Разбить документ на части с использованием регулярного выражения
Читаю документ в массив, из него пытаюсь с помощью регулярного выражения разбить на части и разложить данные в модель City. Читаемый документ выглядит так:
241;Тырныауз;Кабардино-Балкария;Северо-Кавказский;21000;1934
242;Чегем;Кабардино-Балкария;Северо-Кавказский;17988;
243;Багратионовск;Калининградская область;Северо-Западный;6399;1336
244;Балтийск;Калининградская область;Северо-Западный;32670;1626
и проблема в том, что в 242 строке отсутствует 6-й столбик и соответственно при разложении в модель он в 6й столбик кладет 1й столбик следующей строки, выскакивает ошибка OFB Помогите написать регулярку, чтобы она пропускали или нулевое значение ставила полю.
public class Main {
public static void main(String[] args) throws FileNotFoundException {
City city = new City();
InputStream readFile = new FileInputStream
("src/main/resources/readFile/city_ru.csv");
Scanner sc = new Scanner(readFile);
while (sc.hasNextLine()) {
String[] arr = sc.nextLine().split(";");
System.out.println(Arrays.toString(arr));
city.setName(arr[1]);
city.setRegion(arr[2]);
city.setDistrict(arr[3]);
city.setPopulation(Integer.valueOf(arr[4]));
city.setFoundation(arr[5]);
}
Модель сама
public class City {
private String name;
private String region;
private String district;
private Integer population;
private String foundation;
Ответы (1 шт):
Автор решения: DronDron
→ Ссылка
в 6й столбик кладет 1й столбик следующей строки
Не-а. arr[5] вообще не существует. Просто проверяйте длину массива!
city.setFoundation(arr.length >= 6 ? arr[5] : "else");
P.S. метка регулярные-выражения лишняя. Ими тут и не пахнет)