2010-01-18 16 views
8

在java中解析字符串是非常直接的,即用Integer.parseInt(s)如果字符串的格式爲'n''-n',但不幸的是,它無法解析字符串格式爲'+ n'在java中字符串的正負號分析數

那麼什麼是從Java字符串分析數的最有效的/優雅的方式,如果它包含正面或負面的前綴:「+ N」「-n」

回答

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

事實上也有很多陷阱使用整數來分析這樣的數字,在該整數有大小和格式(「1,000,000.00」)不解析這樣的非常具體的界限,但我把你的因爲Integer.parseInt只是滿足你的需求,你只需要處理數據中的+。

+0

java.text.NumberFormat可能是要使用的解析器,但仍然無法解決「+」問題。正如演示的那樣,String.replace()的確如此。 – 2010-01-18 23:34:42

+0

是的,的確,我希望有一些基於內置解析器/格式化器的解決方案... – 2010-01-19 05:24:00

+0

@Gennady Shumakher,你能詳細說明你需要解析的可能性範圍嗎? – Yishai 2010-01-19 14:14:44

0

僅供參考,這已被固定在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,longshort,byte, 和BigInteger值的所有各種方法,現在已經修復了 。它們中有更多的可能會比你想象的要多。除了解析(Int | Long | Short | Byte)之外,還有 解碼方法可以處理十六進制和八進制輸入,以及 valueOf產生包裝對象的方法。構造函數的BigInteger(String) 也被更新。