【发布时间】:2014-01-31 16:14:58
【问题描述】:
我有这种方法要求用户输入特定格式的输入(日期) - 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 = 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]);
我怎样才能让它限制插入字符串的位数?
【问题讨论】:
-
删除正则表达式中的所有
'+'。 -
您可以尝试使用 SimpleDateFormat 解析字符串,捕获异常并返回 false。这可能是最肮脏但最简单的方法
-
完美感谢 Flavio,它完美运行
-
请注意,您仍然可以输入 54/23/2014 之类的内容,因此这远非完美!正如其他人所说,您可能应该使用日期解析器。
标签: java string date joptionpane