【问题标题】:Comparing String to int JAVA将字符串与 int JAVA 进行比较
【发布时间】:2017-04-07 03:25:29
【问题描述】:

我试图弄清楚如何确保字符串变量没有数字作为字符串。我无法导入任何东西。

我试过了

NameArray[i].equalsIgnoreCase("")) || Integer.parseInt(NameArray[i]) >= 48 && Integer.parseInt(NameArray[i]) < 58

但它不起作用。

【问题讨论】:

  • "48".equals(NameArray[i].trim()) 或类似的,这样您就可以避免解析不是数字的String 的问题
  • @Evelyn,据我了解,您需要检查字符串中是否包含任何数值。请检查我的答案,如果有帮助,请告诉我:)

标签: java string compare comparison jgrasp


【解决方案1】:

在 Java 8+ 中,您可以使用 IntStream 生成范围 ([48, 58]),然后检查 String 是否等于您的 NameArray。比如,

if (IntStream.rangeClosed(48, 58).anyMatch(x -> String.valueOf(x)
        .equals(NameArray[i]))) {

}

你提到你想确保它不包含值 - 所以也许你真的想要 noneMatch 喜欢

if (IntStream.rangeClosed(48, 58).noneMatch(x -> String.valueOf(x)
        .equals(NameArray[i]))) {

}

【讨论】:

    【解决方案2】:

    您可以尝试使用 Integer.parseInt(string) 将字符串转换为数字。 如果它给出一个异常而不是一个数字。

    public boolean validNumber(String number) 
    {
       try 
       {
         Integer.parseInt(number);
       } 
       catch (NumberFormatException e) 
       {
         return false;
       }
       return true;
    }
    

    【讨论】:

      【解决方案3】:

      因此,您需要检查一个不包含任何数字的字符串。 尝试使用正则表达式.*[0-9].*,它将检查字符串中是否出现任何数字字符。

          String regex = ".*[0-9].*";
      
          // Returns true
          System.out.println("1".matches(regex));
          System.out.println("100".matches(regex));
          System.out.println("Stack 12 Overflow".matches(regex));
          System.out.println("aa123bb".matches(regex));
      
          // Returns false
          System.out.println("Regex".matches(regex));
          System.out.println("Java".matches(regex));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-27
        • 2022-08-14
        • 2017-02-20
        • 2010-10-06
        • 1970-01-01
        • 2011-10-19
        • 2017-09-10
        • 1970-01-01
        相关资源
        最近更新 更多