【问题标题】:Preventing a String from getting integer values in Java防止字符串在 Java 中获取整数值
【发布时间】:2014-08-07 11:58:47
【问题描述】:

有没有办法做到这一点?

例如,在我的申请表中,有一个用户名字段,它是一个 String。但是我怎样才能禁止用户给出例如 "L3bron James" 而不是给出 "Lebron James"

String sql_name = name.getText();
// name is a JTextField
if (sql_name.length() == 0)
    {
        //how to check if the name does not contain int digits
    JOptionPane.showMessageDialog(null,"Name is a string ,NOT an Integer, not a null value!!","Invalid Name",JOptionPane.ERROR_MESSAGE);
    }

【问题讨论】:

  • 您可以在运行时以编程方式控制它。如果输入的是数字,则从表单字段中删除此字符。
  • 有关键事件监听器。
  • 并记录事件监听器。
  • 请注意,有些有效名称包含整数。例如参见Men's Names and Titles:当一个人以他的“Jr.”父亲的名字命名时,他被称为“第三个”,一旦写成数字 3rd 或罗马数字 III但现在几乎只限于后者。

标签: java string swing int


【解决方案1】:

你可以对字符串使用正则表达式来查看它是否包含数字字符:

if (Pattern.compile("[0-9]").matcher(sql_name).find()) {
    // Show error message
}

【讨论】:

  • Pattern 需要导入吗?
  • 我的意思是它已编译,但 2014 年的字符串仍然被接受,而它不应该被接受
  • 你能显示你使用的代码吗?上面的代码应该可以工作。刚刚验证它在这里给出了预期的结果。
【解决方案2】:

这取决于您要在哪里过滤整数。按照这个答案How to filter string for unwanted characters using regex?,您可以使用正则表达式检查整数并在找到整数时再次提示用户。或者你可以直接替换它们,这有点粗鲁。

【讨论】:

    【解决方案3】:

    您可以使用来自 apache commons 的 StringUtils.isAlphaSpace

    StringUtils.isAlphaSpace(null)   = false
    StringUtils.isAlphaSpace("")     = true
    StringUtils.isAlphaSpace("  ")   = true
    StringUtils.isAlphaSpace("abc")  = true
    StringUtils.isAlphaSpace("ab c") = true
    StringUtils.isAlphaSpace("ab2c") = false
    StringUtils.isAlphaSpace("ab-c") = false
    

    【讨论】:

      【解决方案4】:

      替代解决方案

      boolean flag = false;
      for (int i = 0; i < sql_name.length(); i++) {
              if (Character.isDigit(sql_name.charAt(i)))
                      flag = true;// number exists in the string
                  }
      if (flag == true)
         JOptionPane.showMessageDialog(null,"Name is a string ,NOT an Integer, NOT a null value!!","Invalid Name",JOptionPane.ERROR_MESSAGE);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-24
        • 1970-01-01
        • 1970-01-01
        • 2013-06-27
        • 1970-01-01
        相关资源
        最近更新 更多