使用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
不是有效整数。 对于从字符串构造int
,long
,short
,byte
和BigInteger
值的所有各种方法,现在已经修复了这个问题。 它们中有更多比您想象的要多。 除了解析(Int | Long | Short | Byte)之外,还有使用hex和八进制输入的decode方法,以及生成包装器对象的valueOf
方法。BigInteger(String)
构造函数也会更新。