2015-04-07 80 views
-4
StringBuilder s = new StringBuilder(": 2573.01,,"); 
double d; 

上面的字符串需要轉換爲double。問題在於特殊字符。我如何刪除這些?如何將特殊字符的字符串轉換爲Java中的int

預期結果:d = 2573.01;

+1

那麼什麼樣的價值,你會指望* *,要轉換爲?它有一個小數點......你需要提供更多關於你在提問時想達到什麼的背景。 –

+0

,因爲你沒有告訴我們你期望什麼價值嘗試s.replace(「anythinghere」,「」); – 12dollar

+0

是你想用這種格式轉換的所有字符串:[空格] [數字]。[數字] ,,'? – MCHAppy

回答

3
String st = s.toString(); 
st = st.replaceAll(":", "").replaceAll(",", "").replaceAll(" ", ""); 
double d = Double.valueOf(st); //Decimal 
int i = (int)d; //No Decimal 
+0

不錯的工作,但它不回答OP問題。他們想要返回double而不是int。 – MCHAppy

+0

如果你閱讀,它清楚地說明了什麼給了小數,什麼不給,並且在他提到double的時候這個答案已經被解決了,當時他問了int。 – marko5049

0

你可以嘗試用正則表達式提取數字。

String st = s.toString(); 
st.replaceAll("[^\\d\\.]",""); 
double n = Double.valueOf(st); 
+0

不幸的是,這不會處理很多邊緣案例。如果它是一個負數呢? –

+0

是的,正則表達式需要修改任何額外的要求,但問題本身只針對特定的字符串。 – Dragondraikk

1

一個很好的一個襯裏爲您:

public double getDoubleFromNoisyString(String s) { 
    return Double.valueOf(
       s.replaceAll(
        "^.*?(-?\\d+(\\.\\d+)?).*$", 
        "$1")); 
} 

基本上,它查找字符串中的第一個值,該值似乎是在一個整數或十進制數的形式(包括一家領先的負標誌)並忽視所有其他角色。

0
String str = ":- 2573.01,,"; 
str = str.replaceAll("[^\\d-.]", ""); 
double value = Double.parseDouble(str); 
System.out.println(value); 

輸出:

-2573.01 
+0

@ user3520698我也檢查了負數。 – MCHAppy

相關問題