如何在Java中将带有特殊字符的字符串转换为int

如何在Java中将带有特殊字符的字符串转换为int,java,Java,上面的字符串需要转换为double。问题在于特殊字符。我如何移除这些 预期结果:d=2573.01 您可以尝试使用正则表达式提取数字 StringBuilder s = new StringBuilder(": 2573.01,,"); double d; String st = s.toString(); st = st.replaceAll(":", "").replaceAll(",", "").replaceAll(" ", ""); double d = Double.valueOf

上面的字符串需要转换为double。问题在于特殊字符。我如何移除这些


预期结果:d=2573.01

您可以尝试使用正则表达式提取数字

StringBuilder s = new StringBuilder(": 2573.01,,");
double d;
String st = s.toString();
st = st.replaceAll(":", "").replaceAll(",", "").replaceAll(" ", "");
double d = Double.valueOf(st); //Decimal
int i = (int)d; //No Decimal

给你一个漂亮的一行:

String st = s.toString();
st.replaceAll("[^\\d\\.]","");
double n = Double.valueOf(st);
基本上,它查找字符串中的第一个值,该值的形式为整数或十进制数(包括前导负号),而忽略所有其他字符

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


那么你希望它转换成什么值呢?里面有一个小数点。。。在提问时,您需要提供更多关于您试图实现的目标的上下文。因为您没有告诉我们您期望的价值,那么尝试s.replace(“anythinghere”,“anythinghere”)如何;所有要转换为以下格式的字符串
:[space][digits].[digits],
?不幸的是,这些格式不能处理很多边缘情况。如果它是负数呢?是的,正则表达式需要修改以满足任何额外的要求,但问题本身只要求特定的字符串。做得好,+1但它没有回答OP问题。他们想返回double而不是int。如果你读了,它清楚地说明了什么给出了十进制,什么没有,这是在他说double之前回答的,当他要求int时。@user3520698我也检查了负数。
String str = ":- 2573.01,,";
str = str.replaceAll("[^\\d-.]", "");
double value = Double.parseDouble(str);
System.out.println(value);
-2573.01