StringBuilder s = new StringBuilder(": 2573.01,,");
double d;
上面的字符串需要轉換爲double。問題在於特殊字符。我如何刪除這些?如何將特殊字符的字符串轉換爲Java中的int
預期結果:d = 2573.01;
StringBuilder s = new StringBuilder(": 2573.01,,");
double d;
上面的字符串需要轉換爲double。問題在於特殊字符。我如何刪除這些?如何將特殊字符的字符串轉換爲Java中的int
預期結果:d = 2573.01;
你可以嘗試用正則表達式提取數字。
String st = s.toString();
st.replaceAll("[^\\d\\.]","");
double n = Double.valueOf(st);
不幸的是,這不會處理很多邊緣案例。如果它是一個負數呢? –
是的,正則表達式需要修改任何額外的要求,但問題本身只針對特定的字符串。 – Dragondraikk
一個很好的一個襯裏爲您:
public double getDoubleFromNoisyString(String s) {
return Double.valueOf(
s.replaceAll(
"^.*?(-?\\d+(\\.\\d+)?).*$",
"$1"));
}
基本上,它查找字符串中的第一個值,該值似乎是在一個整數或十進制數的形式(包括一家領先的負標誌)並忽視所有其他角色。
String str = ":- 2573.01,,";
str = str.replaceAll("[^\\d-.]", "");
double value = Double.parseDouble(str);
System.out.println(value);
輸出:
-2573.01
@ user3520698我也檢查了負數。 – MCHAppy
那麼什麼樣的價值,你會指望* *,要轉換爲?它有一個小數點......你需要提供更多關於你在提問時想達到什麼的背景。 –
,因爲你沒有告訴我們你期望什麼價值嘗試s.replace(「anythinghere」,「」); – 12dollar
是你想用這種格式轉換的所有字符串:[空格] [數字]。[數字] ,,'? – MCHAppy