从文本文件中读出一行数据(该行数据的每一项数据用“|”分割),要用正则匹配一下该行数据是否符合要求(这一点已经实现),现在是如果不符合的话要提示一下用户究竟在这行文本中的那一项出问题。例子:
比方说有这样一行数据   aa|123456|bbb|cc||cc   
该行的第二项在正则中要求是7位数字,所以校验的经过为False,但如何提示第二项有问题呢

解决方案 »

  1.   

    String s = "aa|123456|bbb|cc||cc" ;
    String [] ss = s.split("\\|") ;
    if(ss[1].length()<8){
    System.out.println(ss[1]);
    System.out.println("出错");
    }
      

  2.   

    给你的正则加上小括号,然后参考Pattern,Matcher两个类,使用Matcher的group(int group) 方法判断。
     
      

  3.   

    你可以 分揭开 放到map里去判断 然后确定错误的项数
      

  4.   

    看看这个行不Matcher m = Pattern.compile("aa\\|(?!\\d{7})\\d{0,7}\\|bbb|cc||cc").matcher("aa|123456|bbb|cc||cc");
              if(m.find()){
                   System.out.println("第二项不匹配,应为7位整数");
              }else{
                   System.out.println("正确");
              }
      

  5.   

    重新修改了下Matcher m = Pattern.compile("aa\\|(?!\\d{7})\\d{0,7}\\|bbb\\|cc\\|\\|cc").matcher("aa|123456|bbb|cc||cc");
              if(m.find()){
                   System.out.println("第二项不匹配,应为7位整数:"+m.group());
              }else{
                   System.out.println("正确");
              }
      

  6.   

    如果第二项不限长度的话,那就再改:
    那把"aa\\|(?!\\d{7})\\d{0,7}\\|bbb\\|cc\\|\\|cc"改成"aa\\|(?!\\d{7})\\d+\\|bbb\\|cc\\|\\|cc"就行了。