Недавно меня бросает вызов довольно "легкой" проблемой. Предположим, что есть предложения (сохраненные в String), и мне нужно выяснить, существует ли какая-либо дата в этой строке. Проблемы заключаются в том, что дата может быть в разных форматах. Некоторые примеры показаны в списке:
- 12 июня 1956 года
- Лондон, 21 октября 2014 года.
- 13 октября 1999 г.
- 01/11/2003
Стоит упомянуть, что они содержатся в одной строке. Так что в качестве примера это может быть как:
String s = "This event took place on 13 October 1999.";
Мой вопрос в этом случае был бы тем, как я могу обнаружить, что в этой строке есть дата. Мой первый подход состоял в том, чтобы найти слово "событие", а затем попытаться локализовать дату. Но с более и более возможными форматами даты это решение не очень красиво. Второе решение, которое я пробовал, - создать список в течение нескольких месяцев и выполнить поиск. Это имело хорошие результаты, но по-прежнему не учитывает случаи, когда дата выражается всеми цифрами.
Одним из решений, которое я до сих пор не пробовал, является создание регулярных выражений и попытка найти совпадение в строке. Не уверен, насколько это решение может снизить производительность.
Что может быть хорошим решением, которое я, вероятно, должен рассмотреть? Кто-нибудь сталкивался с подобной проблемой раньше и какие решения вы нашли?
Одно можно сказать наверняка, что нет времени, поэтому единственной интересной частью является дата.