【问题标题】:Check if String doesn't have any letters but only numbers检查字符串是否没有任何字母而只有数字
【发布时间】:2023-03-23 08:04:01
【问题描述】:

如何检查java中的字符串是否没有字母,只有数字?谢谢你的回答

【问题讨论】:

    标签: java string char int


    【解决方案1】:

    您可以使用正则表达式:yourString.matches("\\d+")

    \\d 表示 0-9 一位数,+ 表示一位或多位,组合 \\d+ 等于一位或多位数字 :)

    【讨论】:

      【解决方案2】:

      使用正则表达式:

      string.matches("\\d*");
      

      "\d*" 表示“一个数字 (0-9) 零次或多次”。或者,您可以将“*”替换为“+”以表示“一次或多次”。

      【讨论】:

      • 也谢谢你的解释
      【解决方案3】:

      您可以只遍历字符串并检查每个字符(如果考虑性能,可能比使用正则表达式更有效)。

      boolean isAllDigit(String s) {
          for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) < '0' || s.charAt(i) > '9') {
              return false;
            }
          }
      
         return true;
      }
      

      【讨论】:

      • 如果我看起来很烦人,我很抱歉,但是正则表达式如何比遍历所有这些更慢?我是初学者,只是问问背后的理论
      • 我不确定正则表达式是如何在 Java 中实现的,但通常的做法是将正则表达式编译为有限自动机,然后在字符串上运行自动机以看看是否匹配。在这种情况下,自动机相当简单。但是,无论哪种情况,您都将遍历整个字符串。因此,使用正则表达式的成本大约是:“构建自动机”+“迭代”。上面代码的成本只是“迭代”。所以,如果你有 200 亿个字符串,上面的代码会更快。
      • 如果你只有一个很长的字符串,我认为这不会有什么不同,因为无论字符串长度如何,你只构建一次自动机,它的大小由正则表达式决定。
      【解决方案4】:

      你为什么不把它放在 try/catch 中?

          String number="a123.2";
          try {
              Double.parseDouble(number);
              System.out.println("It's a number");
          } catch (Exception e) {
              System.out.println("This is not a number!");
          }
      

      【讨论】:

        【解决方案5】:

        org.apache.commons.lang.StringUtils.isNumeric(String) 验证输入字符串中的所有字符都是数字。

        它被实现为(如果你不想要第 3 方依赖):

            int sz = str.length();
            for (int i = 0; i < sz; i++) {
                if (Character.isDigit(str.charAt(i)) == false) {
                    return false;
                }
            }
            return true;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-22
          • 1970-01-01
          • 1970-01-01
          • 2015-06-10
          • 1970-01-01
          • 2011-07-11
          • 2017-10-18
          相关资源
          最近更新 更多