有两个字符串s1,s2,写一个方法验证s1字符串是否是符合s2格式的日期形式(前提:s2一定是合法的日期格式字符串,如"yyyy/MM/dd"等)要求:尽量不要使用try...catch的方法来做。程序结构尽量简单。谢谢。

解决方案 »

  1.   

    public boolean check(String s1, String s2) {
    Pattern p = Pattern.compile("\\d+");
    Matcher m1 = p.matcher(s1);
    Matcher m2 = p.matcher(s2);
    return m1.replaceAll("").Equals(m2.replaceAll(""))
    }
      

  2.   

    可以在改进一下
    public boolean check(String s1, String s2) { 
    Pattern p = Pattern.compile("\\d+"); 
    Matcher m1 = p.matcher(s1); 
    Matcher m2 = p.matcher(s2); 
    String str1 = m1.replaceAll("").toUpperCase().replace("AM","PM")
    String str2 = m1.replaceAll("").toUpperCase().replace("AM","PM")
    return str1.Equals(str2); 
    }
      

  3.   

    很简单    public Date parseDate(String s1, String s2) {
            SimpleDateFormat format = new SimpleDateFormat(s2);
            Date date = null;
            try {
                date = format.parse(s1);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            return date;
        }
      

  4.   

    s2一定是某一个合法的日期格式,比如,s2可能但不限于下面的一种:yyyy/MM/dd
    yyyy/MM/dd HH:mm:ss
    yyyy/M/d
    yyyy/M/d HH:mm:ss
    M/d/yyyy
    MM/dd/yyyy
      

  5.   

    何必呢,用try catch不是很好吗,我觉得没有比这效率更好的了
      

  6.   

    public Date parse(String s1, String s2) {
            SimpleDateFormat sdf= new SimpleDateFormat(s2);
            Date date = null;
            try {
                date = sdf.parse(s1);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return date;
        }
      

  7.   

        public Date parseDate(String s1, String s2) {
            SimpleDateFormat format = new SimpleDateFormat(s2);
            Date date = null;
            try {
                date = format.parse(s1);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            return date;
        }这个不错