Операции со строками в 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"
};