如何验证从文本文件中读取的字符串?

时间:2013-12-10 15:41:59

标签: java

我创建了一个从文本文件中读取的函数

public void readClientData() {
        JFileChooser chooser = new JFileChooser();
        chooser.setMultiSelectionEnabled(false);
        int opt = chooser.showOpenDialog(this);
        if (opt == JFileChooser.APPROVE_OPTION) {
            // read data from file
            File infile = chooser.getSelectedFile();
            System.out.println("Reading data from " + infile.getAbsolutePath());
            try {
                BufferedReader rdr = new BufferedReader(new FileReader(infile));
                String line;

                int id = 1;
                line = rdr.readLine();
                while (line != null) {
                    processNewClient(id, line);
                    id++;
                    line = rdr.readLine();
                }

                rdr.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(this, "File Not Found",
                        "Unable to open " + infile.getAbsolutePath(),
                        JOptionPane.ERROR_MESSAGE);
            }
        }
    }

我的文本文件按照姓氏,名字,门牌号和邮政编码的顺序存储客户数据,如下所示:

Clegg Nick 12 LL1 3AA

我如何验证文本文件中的字符串,以确保名字姓氏都不为空,门牌号必须大于或等于1,邮政编码由2个大写字母,1个数字,1个数字和1个大写字母组成?另外,如何在验证期间将小写字母(在后置代码中)转换为大写字母?

2 个答案:

答案 0 :(得分:1)

你的问题太多了,你应该先试试看,但我可以给你一些提示:

在空格上拆分字符串:

String[] tokens = line.split(" ");

之后,您将获得每个验证值。其余的可以通过普通的if()..和一些正则表达式来完成。

尝试一下,如果你卡在某个地方,你仍然可以再次询问,但后来我们会提供一些代码。 ;)

P.S。:由于文件内容采用语法(例如姓名,姓氏......),因此您始终知道令牌的数量以及哪个令牌代表某个值。如果文件内容可能包含无效语法,则还必须先验证它。 (代币数量等)

答案 1 :(得分:0)

每个问题的答案:

我如何验证文本文件中的字符串,以确保名字或姓氏都不是空的。 (StringUtils来自apache commons库。如果你不想添加它,那么你需要编写一个方法,其中包含字符串!= null&&!“”。equals(string.trim())或者其他东西沿着这些路线)

StringUtils.isNotBlank(firstName) && StringUtils.isNotBlank(lastName);

门牌号必须大于或等于1

houseNumber>=1

邮政编码由2个大写字母,1个数字,1个数字和1个大写字母组成?

  • 使用正则表达式。使用谷歌找到合适的。

另外,如何在验证期间将小写字母(在后置代码中)转换为大写字母?

postcode = postcode.toUpperCase();