我创建了一个从文本文件中读取的函数
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个大写字母组成?另外,如何在验证期间将小写字母(在后置代码中)转换为大写字母?
答案 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();