Я пытаюсь определить год в строке.Я посмотрел много других ранее заданных вопросов, но не могу найти тот, который касается случайных форматов.Допустим, я ищу деталь для Ford Explorer 2001 года и хочу отфильтровать результаты, чтобы удалить детали, не предназначенные для этого года.Я могу столкнуться с форматами ниже года.Я думал, что String.contains ("01") будет в порядке, но тогда это также соответствует 2010 году, и не учитывает, когда год, который я ищу, вообще отсутствует в строке, но падает между другими годами.Возможно ли, что одно регулярное выражение может охватить все эти сценарии?
- Подходит для Ford Explorer 2001 года.
- Подходит для Ford Explorer 1997-2002 годов.
- Подходит для 01 Ford Explorer.
- 01 Ford Explorer.
- Подходит для 97-02 Ford Explorer.
- Подходит от 97 до (или через) 02 Ford Explorer.
Попытка
public Boolean filterResult(String str, String expectedYear){
if(str.contains("expectedYear") && (str.indexOf(expectedYear)-1 !=2 ||
str.indexOf(expectedYear) == 0){
return true;
}else{
return false;
}
}
В случае 2010 возвращает false.Возвращает true, если предыдущая цифра была пробелом или тире, а также, если ожидаемый год находится в начале строки.Не касается ожидаемого года между двумя другими годами.