扫描程序文件验证

时间:2014-10-31 14:41:25

标签: java regex validation

我试图创建一个小程序来读取文件中的输入,如果它们符合特定格式,则将其打印出来:

Team Name : Another Team name : Score : Score

这是我到目前为止所做的,如果你能指出我正确的方向,我真的很感激

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class Generator {

    public static void main(String[] args) throws FileNotFoundException{

        String file;
        Scanner fileScan;
        fileScan = new Scanner (new File("document.txt"));
        int count = 0;

        while (fileScan.hasNextLine()){
            file = fileScan.nextLine();
            System.out.println(file);
            count++;

        }

        System.out.println(count+ " number of lines successfully validated");

    }

}

我希望该程序能够验证格式是否有效以及是否不打印该行但是要保持计数,以便我可以输出最后有多少行没有正确验证

感谢。

4 个答案:

答案 0 :(得分:2)

使用String.matches(regexPattern)进行非常简单的检查。使用另一个变量来保持无效行的计数。

int invalidLines = 0;
String line =null;
while (fileScan.hasNextLine()){
        line = fileScan.nextLine();
        if(!line.matches(regexPattern)){
               invalidLines++;
        }
        count++;
}

使用\w+进行单词匹配,将\d+用于数字。

Read more about regex on StackOverflow

答案 1 :(得分:0)

String#split()和数组的length属性是此处使用的工具。

我留给你,了解如何正确使用它们。

答案 2 :(得分:0)

 public static void main(String[] args) throws FileNotFoundException{
int invalidcount=0;
        String file;
        Scanner fileScan;
        fileScan = new Scanner (new File("document.txt"));
        int count = 0;
String arrTeam[]={ "",""}; // create arrTeam array with the valid inputs in it

     while (fileScan.hasNextLine()){
            file = fileScan.nextLine();
for(inti=0;i<arrTeam.length;i++)   // have a loop on the array here
{
if(arrTeam[i]=!file){   //if the input is not in the array increase the invalid count
  invalidcount++;

}
     }       else
{
System.out.println(file);
 }
           count++;

        }

        System.out.println(count+ " number of lines successfully validated");
 System.out.println(invalidcount+ " number of lines unsuccessful");  // print them here
    }

答案 3 :(得分:0)

如果返回true,则可以使用正则表达式匹配输入,然后输入匹配,如果为false则匹配Ex。

String test = "TeamA:TeamB:44:99";
System.out.println("" + test.matches("\\D+[:]\\D+[:]\\d+[:]\\d+"));

这将匹配nondigits:nondigits:numbers:numbers