Разделить строку и удалить запятые, хранящиеся в массиве - Java - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь разбить строку, удалив части, которые мне в данный момент не нужны. Я удалил большинство частей, но в выводе слишком много запятых в массиве, где они хранятся. Вот мой текущий код:

List<String> flightItems = new ArrayList<String>();
String s = flightInfo;
String[] tokens = s.split("Start Location: | ---- |Destination: |Date/Time: ");

for (String t : tokens) {

    flightItems.add(t);
}
System.out.println(flightItems);

Вот так выглядит вывод в моей консоли:

[, BOS, , ALB, , 03-20-2020 09:00AM]

Требуемый вывод, который я ищу, таков, так что я могу сослаться на индексы позже:

[BOS, ALB, 03-20-2020 09:00AM]

Строка flightInfo выглядит следующим образом:

Start Location: BOS ---- Destination: ALB ---- Date/Time: 03-20-2020 09:00AM

1 Ответ

0 голосов
/ 14 марта 2020

Хотя ваше текущее регулярное выражение может быть не идеальным для разбиения, оно близко к выполнению регулярного выражения для входного текста. Рассмотрим:

String input = "Start Location: BOS ---- Destination: ALB ---- Date/Time: 03-20-2020 09:00AM";
String pattern = "(?:\\b(?:Start Location:|Destination:)\\s*(\\S+)|Date/Time:\\s*(\\S+\\s+\\S+))";
List<String> matches = new ArrayList<>();
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);
while (m.find()) {
    matches.add(!Objects.isNull(m.group(1)) ? m.group(1) : m.group(2));
}
System.out.println(String.join(",", matches)));

Это печатает:

BOS,ALB,03-20-2020 09:00AM
...