在java中解析字符串是非常直接的,即用Integer.parseInt(s)如果字符串的格式爲'n'或'-n',但不幸的是,它無法解析字符串格式爲'+ n'。在java中字符串的正負號分析數
那麼什麼是從Java字符串分析數的最有效的/優雅的方式,如果它包含正面或負面的前綴:「+ N」或「-n」?
在java中解析字符串是非常直接的,即用Integer.parseInt(s)如果字符串的格式爲'n'或'-n',但不幸的是,它無法解析字符串格式爲'+ n'。在java中字符串的正負號分析數
那麼什麼是從Java字符串分析數的最有效的/優雅的方式,如果它包含正面或負面的前綴:「+ N」或「-n」?
Integer.parseInt(s.replace("+", ""));
事實上也有很多陷阱使用整數來分析這樣的數字,在該整數有大小和格式(「1,000,000.00」)不解析這樣的非常具體的界限,但我把你的因爲Integer.parseInt只是滿足你的需求,你只需要處理數據中的+。
僅供參考,這已被固定在Java 7中
從,Java SE8 for the Really Impatient
此前
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)之外,還有 解碼方法可以處理十六進制和八進制輸入,以及valueOf
產生包裝對象的方法。構造函數的BigInteger(String)
也被更新。
java.text.NumberFormat可能是要使用的解析器,但仍然無法解決「+」問題。正如演示的那樣,String.replace()的確如此。 – 2010-01-18 23:34:42
是的,的確,我希望有一些基於內置解析器/格式化器的解決方案... – 2010-01-19 05:24:00
@Gennady Shumakher,你能詳細說明你需要解析的可能性範圍嗎? – Yishai 2010-01-19 14:14:44