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

时间:2015-04-07 09:34:57

标签: java

StringBuilder s = new StringBuilder(": 2573.01,,");
double d;

上面的字符串需要转换为double。问题在于特殊字符。我如何删除它们?

预期结果:d = 2573.01;

4 个答案:

答案 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