如何解析字符串以从中获取double值

时间:2014-09-19 20:33:06

标签: java regex parsing

请帮我解决下一个问题:

有String模式,假设它是公共最终的静态变量。有搜索的字符串。有类,简单的包装器加倍

public class Wrapper {

    private double value;

    public double getValue() {
        return value;
    }

    public Wrapper(double value) {
        this.value = value;
    }
}

我需要方法

public Wrapper parse(String s, int index)
如果索引处的字符串是双精度数字,小数点后最多2位数(如果有小数点),并且数字结束后右边有字符串模式,

返回Wrapper对象 例如对于字符串

String pattern = "money";
String search = "Giveme10.25moneyplease";

parse(search,6)返回新的Wrapper(10.25)

在其他情况下(索引小于零,大于字符串的长度,从索引开始的子字符串根本不是数字或它的双数,但它包含小数点后的2位数以上或者数字后没有字符串模式)方法必须返回null

另一种只有字符串模式不同的方法必须是第一个,然后是双数字,小数点后最多2位,所有其他方法相同

String pattern = "money"
String s = "Ihavemoney10.50"

parse1(s,5)返回新的Wrapper(10.50)

1 个答案:

答案 0 :(得分:2)

您可以像这样使用DecimalFormatParsePosition

import java.text.DecimalFormat;
import java.text.ParsePosition;

public class TestP {

    public static void main(String[] args) {


        DecimalFormat decimalFormat = new DecimalFormat("00.##'money'");

        String search = "Giveme10.25moneyplease";

        int index = 6;
        //output 10.25
       Number number = decimalFormat.parse(search, new ParsePosition(index));

    if (number != null) {
        String s = number.toString();           
        if (s.contains(".") && s.length() > 5) {
            number = null;
        }
    }
    System.out.println(number);

    }

}