【问题标题】:check if a string inserted by user input corresponds to a particular format检查用户输入插入的字符串是否对应于特定格式
【发布时间】: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


【解决方案1】:

您应该尝试将其解析为给定格式的日期并捕获解析错误。看看SimpleDateFormat

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2021-02-25
    • 2018-02-03
    • 2020-07-12
    • 2022-06-17
    • 1970-01-01
    相关资源
    最近更新 更多