Операции со строками в java android

Имеются строки, нужно выбрать только те которые nn.nn.nnnn nn:nn:nn (пробел тоже учитывать!)

23.12.2020 09:16:07

23.12.2020 09:16:08

23.12.202009:16:07

23.12.2020 09:23.07

23.05.2020 09-16:07

23.17.2020 09:26607

nbvsdjhfjdshfskljdfhj

asdfasdfsadfasdfasdf

23.05.2020 09:16*07

23.17.2020 09:26+07

05.15.2020 09.09v05

Результат должен быть:

23.12.2020 09:16:07

23.12.2020 09:16:08


Ответы (2 шт):

Автор решения: Cypher

Можно использовать SimpleDateFormat

Допустим у нас есть массив строк. И нам нужно отфильтровать их.

String[] dates = new String[]{"23.05.2020 09:16*07", "23.05.2020 09-16:07", "23.12.2020 09:16:07"};
ArrayList<String> fList = new ArrayList<>();

for (String s : dates) {
    if (isValidDate(s)) fList.add(s);
}

SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");

boolean isValidDate(String input) {
    try {
        format.parse(input);
        return true;
    } catch (ParseException e) {
        return false;
    }
}
→ Ссылка
Автор решения: Style-7

Используйте регулярные выражения.

String reg_exp = "\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d\\s\\d\\d:\\d\\d:\\d\\d";
Pattern pattern = Pattern.compile( reg_exp );

for( int i = 0; i < test.length; i++ ){
    if( pattern.matcher( test[i] ).matches() ){
        Log.d( "TEST", test[i] );
    }else{
        Log.d( "TEST", "NOT!" + test[i] );
    }
}

Тест пройден.

    String [] test = {
            "23.12.2020 09:16:07",
            "23.12.2020 09:16:08",
            "23.12.202009:16:07",
            "23.12.2020 09:23.07",
            "23.05.2020 09-16:07",
            "23.17.2020 09:26607",
            "nbvsdjhfjdshfskljdfhj",
            "asdfasdfsadfasdfasdf",
            "23.05.2020 09:16*07",
            "23.17.2020 09:26+07",
            "05.15.2020 09.09v05"
    };
→ Ссылка