编辑:说明将任何有效的数字编码从字符串转换为数字
如何将字符串转换为数字,例如对于整数,对于所有可接受的整数格式,尤其是在Integer.parseInt下引发NumberFormatException的格式。例如,代码
...
int i = 0xff;
System.out.println(i);
String s = "0xff";
System.out.println( Integer.parseInt(s) );
....
即使字符串显然是十六进制整数的有效编码,也将在第四行抛出NumberFormatException。我们可以假设我们已经知道编码是有效的数字,例如通过将其与正则表达式进行比较来确定。也可以检查溢出(就像Integer.parseInt一样),但是如果必须将其作为一个单独的步骤来完成,那也可以。
我可以遍历每个数字并手动计算组合,但这将非常困难。有没有更好的办法?
编辑:很多人都在回答十六进制,这很好,但不是我所要的完全(这是我的错,我以十六进制为例)。我想知道是否有一种方法可以解码所有有效的Java数字。 Long.decode绝对适合捕获十六进制,但是在
222222L
这是一个完全有效的时长。我是否必须分别捕捉每种不同的数字格式?我假设您已经使用了正则表达式来判断数字是什么类别,即区分浮点数,整数等。
最佳答案
你可以做
System.out.println(Integer.decode(s));