Scala / Java - синтаксический анализ строки, которая имеет только часть даты - PullRequest
0 голосов
/ 14 сентября 2018

Итак, у меня есть 2 строки

val a : String = "foo April 06 1994 bar"
val b : String = "April 06 1994" // this format can change

и у меня есть последовательность из 4 парсеров

private val dateParsers = Seq(
    JChronicDateParser,
    UKDateParser,
    USDateParser,
    GermanDateParser
  )

и теперь я анализирую их переменные и в обоих случаях получаю успешные результаты

dateParsers.map(parsers => {
            parsers.parse(variable)//a or b
          })

Есть ли какой-нибудь эффективный способ не выполнить синтаксический анализ string a, я хочу, чтобы синтаксические анализаторы не работали, когда в строке с частью даты есть дополнительная информация или символы?

Я пробовал такие методы, как не использовать какой-либо синтаксический анализатор, а получить строку и отформатировать ее с помощью

val dateFormat = new SimpleDateFormat("yyyy-MM-dd")
dateFormat.parse(a) // it fails in both cases so no good

1 Ответ

0 голосов
/ 14 сентября 2018

Ваш SimpleDateFormat терпит неудачу, потому что формат, который вы указываете, неверен.Попробуйте "MMMM dd yyyy".

Кроме того, SimpleDateFormat не очень хороший вариант.Начиная с Java 8, лучше использовать DateTimeFormatter вместо:

DateTimeFormatter.ofPattern("MMMM dd yyyy").parse("April 06 1994")

Что касается вашего другого вопроса - «Есть ли эффективный способ не выполнить синтаксический анализ строки a» - я понятия не имею, что выпросят ... кинуть исключение?Вернуть Option?Try?

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