class GetNumber{
 
public static void  main(String[] args){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

String str = sdf.format(new Date());
System.out.println(str);// 2008/01/24 13:23:50
 
String[] result = str.split("\\D");
for(int i = 0;i<result.length;i++){
System.out.println(result[i]); 
                       /*2008
                        *01
                        *24
                        *13
                        *23
                        *50
                        */
           }
}
}正则表达式\D是匹配0`9之间的任意一个数字,但是str.split("\\D")为什么会返回这么样一个结果呢?

解决方案 »

  1.   

    不劳各位辛苦了,刚看到“在表达式 "\s","\d","\w","\b" 表示特殊意义的同时,对应的大写字母表示相反的意义”,原来如此,我的帖子有问题
    最后一行是\d,不是\D,可以结贴了
      

  2.   

    \\D表示所有非数字字符
    从所有非数字字符把2008/01/24   13:23:50劈开(split)就得到了打印的结果(数组)
      

  3.   

    \\d 小写的才是数字
    \\D 表示所有非数字字符 我认为你的\\D是你想要的结果