我在JAVA程序中,读取文件数据时,需要判断数据的正确性.
其基本格式为: 
"数字,任意字符串,任意字符串"------数字INT或LONG型,中间用,号分隔
当文件中有空行(分包括空格和不包括空格)及数据的第一个字段不是数字时,或不符合这种格式 都要提示文件数据有错...
我做了好久,都没能 组织清楚,请高手帮忙.

解决方案 »

  1.   

    用正则表达式
    import java.util.regex.*;
    public class TestString{
    public static void main(String[] args)throws Exception{
    String s ="1,aadafa,b";
    Pattern pa = Pattern.compile("^\\d+(,[a-zA-z]+){2}$");
    Matcher ma = pa.matcher(s);
    if(ma.find()){
    System.out.println("ok");
    }
    }
    }
      

  2.   

    我就给楼主解释一下这个正则式吧
    "^\\d+(,[a-zA-z]+){2}$"^表示起始符,$表示终结符,
    \d表示数字,\需要转义,所以再加个\,+表示1个或多个\\d+就是若干个数字的意思
    [a-zA-Z]+表示大小写字母若干个(就是楼主说的任意字符串),(,[a-zA-Z+]){2})表示两个",任意字符串"另外,一般的匹配都是贪婪匹配,就是假如给定一个"abc,33,aa,bb,cc,cc"用"\\d+(,[a-zA-z]+){2}"也能匹配(33,aa,bb),只不过匹配的位置不是从头开始,到尾结束,所以这里用^和$来限制一下
      

  3.   

    两位前辈的我看过了.
    但在JAVA中支持的符号集是UNICODE不是ASCII码制,也就是说,任意字符串,不仅包括大小写的字母,还包括中文汉字,或其他一些罗马字等等一系列的字符.....
    两位的程序都限制了,只在大小写的英文字母间..的任意字符串..
      

  4.   

    看看这个行不行
    public class Format {
    private String src; public Format(String src) {
    this.src = src;
    } public boolean test() {// format: data,string,string
    if(src==null)
    return false;
    String str[]  =src.split(",{1}");
    if(src.endsWith(","))
    return false;
    if(str.length!=3)
    return false;

    try{
    Integer.parseInt(str[0]);
    }catch(Exception e1){
    try{
    Long.parseLong(str[0]);
    }catch(Exception e2){
    return false;
    }
    }

    if(str[1].length()==0 || str[2].length()==0)
    return false;
    return true;
    } /*public static void main(String args[]) {
    System.out.println(new Format(null).test());
    }*/
    }
      

  5.   

    但在JAVA中支持的符号集是UNICODE不是ASCII码制,也就是说,任意字符串,不仅包括大小写的字母,还包括中文汉字,或其他一些罗马字等等一系列的字符.....^_^,那就要用UNICODE码来判断了,比如汉字就可以这样匹配!
    Pattern pa = Pattern.compile("[\u4E00-\u9FA0]*",Pattern.CANON_EQ);
      

  6.   

    believefym(feng)的主意不错,谢谢 我试试