Java 检查用户输入插入的字符串是否对应于特定格式
我有一个方法,要求用户以特定的格式输入(日期)——DD/MM/YYYY,并且我使用此代码通过这种方式部分限制了用户输入Java 检查用户输入插入的字符串是否对应于特定格式,java,string,date,joptionpane,Java,String,Date,Joptionpane,我有一个方法,要求用户以特定的格式输入(日期)——DD/MM/YYYY,并且我使用此代码通过这种方式部分限制了用户输入 date.matches("[0-9]+[0-9]/[0-9]+[0-9]/[0-9]+[0-9]+[0-9]+[0-9]")); 但是我仍然在输入上遇到了问题,因为如果用户插入12121/12121212/12121这样的日期,它会像一个好的输入一样接受它并继续前进 输入cicle由使用JOptionPane的这部分代码确定 String date = JOptionPa
date.matches("[0-9]+[0-9]/[0-9]+[0-9]/[0-9]+[0-9]+[0-9]+[0-9]"));
但是我仍然在输入上遇到了问题,因为如果用户插入12121/12121212/12121这样的日期,它会像一个好的输入一样接受它并继续前进
输入cicle由使用JOptionPane的这部分代码确定
String date = JOptionPane.showInputDialog(frame,"Inserisci la data di partenza separata da / (GG/MM/AAAA):");
if (date ==null) { return;}
while (!date.matches("[0-9]+[0-9]/[0-9]+[0-9]/[0-9]+[0-9]+[0-9]+[0-9]")) {
JOptionPane.showMessageDialog(frame, "Data inserita errata");
date = JOptionPane.showInputDialog(frame,"Inserisci la data di partenza separata da / (GG/MM/AAAA):"); }
然后我使用
String[] parts = date.split("/");
int year = Integer.parseInt(parts[2]);
int month = Integer.parseInt(parts[1]);
int day = Integer.parseInt(parts[0]);
如何限制插入字符串的位数?您应该尝试将其作为给定格式的日期进行解析,并捕获解析错误。查看删除正则表达式中的所有
“+”
。您可以尝试使用SimpleDataFormat解析字符串,捕获异常并返回false。这可能是最肮脏但最简单的方法完美thx如此之多的Flavio它工作完美注意你仍然可以输入54/23/2014之类的东西,所以这还远远不够完美!正如其他人所说,您可能应该使用日期解析器。