Не удается разобрать данные заголовка с разделителями в правильной переменной - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть файл с данными в первой строке, из которого я хочу извлечь данные:

20200403|AS421|||FINN|
public void handleLine(String line) {
        if (line.contains(firstJobConfig.DELIMITER_PIPE)){
            headerInfo.setcreateDate(line.substring(0, line.indexOf(firstJobConfig.DELIMITER_PIPE)));
            headerInfo.setformName(line.substring(line.indexOf(firstJobConfig.DELIMITER_PIPE)));
        }
    }
}

У меня есть код, который вытягивает 20200403 в мою переменную createDate, но я не могу понять, как заставить мой formName быть установлен на AS421. сейчас он установлен на |AS421|||FINN|. я знаю, что если я сделаю line.substring(9,14));, это будет работать, но я хочу начать после первого разделителя канала (|) и остановиться на следующем.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Прямо сейчас вы делаете это: headerInfo.setformName(line.substring(line.indexOf(firstJobConfig.DELIMITER_PIPE))) -> вы берете подстроку, начинающуюся с индекса, равного индексу, где находится первый разделитель, и не определяете конец этой подстроки (вот почему результат вторая подстрока: |AS421|||FINN|). Так что лучшим способом будет использовать line.split("\\|") - он вернет таблицу из 5 элементов в вашем случае: ["20200403","AS421","","","FINN"]. И тогда вы можете сделать:

headerInfo.setcreateDate(table[0]);
headerInfo.setformName(table[1])
0 голосов
/ 15 апреля 2020

Вы можете разделить строки, как показано ниже.

Добавьте + для соответствия одному или нескольким экземплярам канала:

temp.split("\\|+");
...