使用java中字符串的正/负前缀解析数字

在java中解析数字是非常直接的,即如果字符串格式为‘n’‘-n’ ,则使用Integer.parseInt(s),但不幸的是它无法解析‘+ n’格式的字符串。

那么,如果它包含正或负前缀: ‘+ n’‘-n’,那么从java中解析数字的最有效/优雅的方法是什么?

Integer.parseInt(s.replace("+", "")); 

事实上有许多陷阱使用Integer来解析这样的数字,因为Integer有非常特定的大小和格式(“1,000,000.00”)的边界不解析那样,但是我把你的问题当作Integer.parseInt遇到你的问题需要很好,你只需处理数据中的+。

仅供参考,这已在Java 7中修复。

从, Java SE8的真正不耐烦

JDK 1.7之前,以下代码段的结果是什么?

double x = Double.parseDouble("+1.0");

int n = Integer.parseInt("+1");

如果您知道答案,请在背面拍拍: +1.0始终是有效的浮点数,但在Java 7之前, +1不是有效整数。 对于从字符串构造intlongshortbyteBigInteger值的所有各种方法,现在已经修复了这个问题。 它们中有更多比您想象的要多。 除了解析(Int | Long | Short | Byte)之外,还有使用hex和八进制输入的decode方法,以及生成包装器对象的valueOf方法。 BigInteger(String)构造函数也会更新。