StringBuilder s = new StringBuilder(": 2573.01,,");
double d;
上面的字符串需要转换为double。问题在于特殊字符。我如何删除它们?
预期结果:d = 2573.01;
答案 0 :(得分:3)
String st = s.toString();
st = st.replaceAll(":", "").replaceAll(",", "").replaceAll(" ", "");
double d = Double.valueOf(st); //Decimal
int i = (int)d; //No Decimal
答案 1 :(得分:1)
适合你的漂亮的衬垫:
public double getDoubleFromNoisyString(String s) {
return Double.valueOf(
s.replaceAll(
"^.*?(-?\\d+(\\.\\d+)?).*$",
"$1"));
}
基本上,它会查找字符串中第一个以整数或十进制数字形式显示的值(包括前导负号),并忽略所有其他字符。
答案 2 :(得分:0)
您可以尝试使用正则表达式提取数字。
String st = s.toString();
st.replaceAll("[^\\d\\.]","");
double n = Double.valueOf(st);
答案 3 :(得分:0)
String str = ":- 2573.01,,";
str = str.replaceAll("[^\\d-.]", "");
double value = Double.parseDouble(str);
System.out.println(value);
<强> 输出: 强>
-2573.01