Разбор текстового файла в Java - PullRequest
2 голосов
/ 03 февраля 2012

У меня есть текстовый файл, который содержит одну строку. Как то так: A10102012MikeM. Первая буква может быть либо A, либо P, следующие цифры соответствуют дате, следующему - имени, потом пол (M или F) Каков наилучший способ для разбора этой информации в карту? Конечно, я могу взять string.substring (x, y) каждого элемента. Но это кажется слишком жестким. Можно ли это как-то сделать с помощью регулярных выражений ??

Ответы [ 5 ]

6 голосов
/ 03 февраля 2012

Попробуйте это регулярное выражение ^(A|P)(\d+)(\w+?)(M|F)$. Это будет работать, но некоторые условия:

1) Он не будет проверять действительность даты.

2) Вывод должен быть точно таким, как вы описали, в противном случае он можетошибка.

String str = "A10102012MikeM";

String p = "^([A|P])(\\d+)(\\w+?)(M|F)$";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
}

выход =

A 10102012 Mike M

1 голос
/ 03 февраля 2012

Возможной альтернативой регулярному выражению, в зависимости от вашей конкретной ситуации, может быть плоский червь на sourceforge.Например, он может читать текстовый файл и заполнять объекты Java для вас.

У них есть хорошее руководство по полю , в котором рассматриваются различные варианты использования.

1 голос
/ 03 февраля 2012

^(A|P)([0-9]){10}(.+)(M|F)$

  • Группа 1 ... A или P
  • Группа 2 ... десятизначная дата
  • Группа 3 ... Название
  • Группа 4 ... M или F (пол)
1 голос
/ 03 февраля 2012
^([AP])(\d+)([A-Za-z]+?)([MF])$

это регулярное выражение (экранирование не выполнено) захватывает различные части данных в группы, чтобы их было проще получить.

1 голос
/ 03 февраля 2012

Да, Java имеет очень хорошую поддержку регулярных выражений.Вы хотите проверить java.util.regex.Pattern .Обратите особое внимание на группы Matcher, которые позволят вам извлекать данные из совпадений регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...