文字列から正しい日付を切り取る小さなアプリを作成しました。文字列がある場合、「2007-01-12sth」としましょう。問題なく動作し、「2007-01-12」と出力されます。文字列「txt2008-01-03」がある場合、問題はありません...これを説明する最善の方法は、コード全体を貼り付けることだと思います。
public class test
{
public static boolean isValid(String text) {
if (text == null || !text.matches("\\d{4}-[01]\\d-[0-3]\\d"))
return false;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
df.setLenient(false);
try {
df.parse(text);
return true;
} catch (ParseException ex) {
return false;
}
}
public static void main(String[] args) {
// txt2008-01-03 is NOT ok INCORRECT, should print 2008-01-03
// 2007-01-12sth is ok CORRECT
// 20999-11-11 is is NOT ok CORRECT
String date = "txt2008-01-03";
Pattern p = Pattern.compile("\\d{4}-[01]\\d-[0-3]\\d");
Matcher m = p.matcher(date);
if(m.find())
date = date.substring(0, m.end());
if(isValid(date))
System.out.println(date + " ");
}
}
「txt2008-01-03」と「2007-01-12sth」の両方から日付を切り取るにはどうすればよいですか? (「2007-01-12th」からだけではありません)