我正在尝试确定字符串数组中的特定项目是否为整数。
我是 .split(" ")
以 String
形式中缀表达式,然后尝试将结果数组拆分为两个数组;一种用于整数,一种用于运算符,同时丢弃括号和其他杂项。实现这一目标的最佳方法是什么?
我以为我可以找到一个 Integer.isInteger(String arg)
方法或其他东西,但没有这样的运气。
原文由 Nick Coelius 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试确定字符串数组中的特定项目是否为整数。
我是 .split(" ")
以 String
形式中缀表达式,然后尝试将结果数组拆分为两个数组;一种用于整数,一种用于运算符,同时丢弃括号和其他杂项。实现这一目标的最佳方法是什么?
我以为我可以找到一个 Integer.isInteger(String arg)
方法或其他东西,但没有这样的运气。
原文由 Nick Coelius 发布,翻译遵循 CC BY-SA 4.0 许可协议
最好像这样使用正则表达式:
str.matches("-?\\d+");
-? --> negative sign, could have none or one
\\d+ --> one or more digits
NumberFormatException
不好用 if-statement
代替。如果你不想前导零,你可以使用正则表达式如下:
str.matches("-?(0|[1-9]\\d*)");
原文由 shuangwhywhy 发布,翻译遵循 CC BY-SA 4.0 许可协议
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
最天真的方法是遍历字符串并确保所有元素都是给定基数的有效数字。这是尽可能高效的,因为您必须至少查看每个元素一次。我想我们可以根据基数对其进行微优化,但就所有意图和目的而言,这与您期望的一样好。
或者,您可以依赖 Java 库来获得它。它不是基于异常的,并且会捕获您能想到的几乎所有错误情况。它会有点贵(你必须创建一个 Scanner 对象,在一个你不想做的非常紧凑的循环中。但它通常不应该太贵,所以对于日常操作应该是相当可靠的。
如果最佳实践对你来说无关紧要,或者你想挑逗做代码审查的人,试试这个大小: