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