20061201
00:00 新闻
09:25 金立世界论中国
18:15 美女私房菜
18:30 凤凰太空站
21:40 昆仑润滑油特约之鲁豫有约:说出你的故事
22:30 金立世界论中国
24:00 天气
end
20061202
00:00 天气
09:25 金立世界论中国
18:15 美女私房菜
18:30 凤凰太空站
21:40 昆仑润滑油特约之鲁豫有约:说出你的故事
22:30 金立世界论中国
24:00 广告
end
20061203
00:00 足球比赛
09:25 金立世界论中国
18:15 美女私房菜
18:30 凤凰太空站
21:40 昆仑润滑油特约之鲁豫有约:说出你的故事
22:30 金立世界论中国
24:00 电视剧
end
......................
==========================================通过上面的举例数据
我们可以知道有3种实验数据
1,日期yyyymmdd
2,结束符:end
3,具体节目信息: hh:mm 节目名
 
问题来了
现在我按行读数据
如何知道这一行是属于那种类型的数据,考虑数据存在异常的情况
比如
1):     22;30 金立世界论中国
2):     .........
         24:00 广告
         (没有end结束符)/(或者没有yyyymmdd开始)
         20061203
         00:00 新闻
         ........
说穿了 就是如何区分当前读入的这一行是日期yyyymmdd还是节目内容hh:mm asdfadfasdfasfd?
 

解决方案 »

  1.   

    private static boolean isDate(String str)
        {
            // 日期的判断最好别那么简单,csdn太多了,可以自己找
            String pattern = "^[\\d]{8,8}$";
            return str.trim().matches(pattern);
        }    private static boolean isNews(String str)
        {
            String pattern = "^[\\d]{2,2}[:|;|;][\\d]{2,2}\\s+.*$";
            return str.trim().matches(pattern);
        }    public static void main(String[] args) throws Exception
        {
            String str = "22;30 你好";
            if (isDate(str))
            {
                System.out.println("日期");
            }
            else if (isNews(str))
            {
                System.out.println("新闻");
            }
            else
            {
                System.out.println("格式错误");
            }
        }
      

  2.   

    不会正则表达式就用indexOf,substring等等来弄。
    但是regex很有用,还是学学。
    慢慢就会了。。
      

  3.   

    也许我意思没表达清楚
    我把需求再说一下
    就是
    如何通过程序判断出这一行的内容是什么类型
    1,日期yyyymmdd
    2,结束符:end
    3,具体节目信息: hh:mm 节目名如果是200612088,2006120,再或者2o061208 虽然我知道它不是日期yyyymmdd 但是还是要判断出它是日期类型 
    还有就是如果是endd esd..............
    因为这个数据单子是人工手动生成的 所以可能出现这样的miss
      

  4.   

    “如果是200612088,2006120,再或者2o061208 虽然我知道它不是日期yyyymmdd 但是还是要判断出它是”
    这样的日期型好办,毕竟有规律
    不用正则表达式,那就要解析String,通过split、indexOf、subString来分析,体力活但如果有输入错误,那就不行了。这样的输入必须在输入部分加以控制,不可以让错误质输进来,不然没法分析的。