【问题标题】:How to parse string to get double value from it如何解析字符串以从中获取双倍值
【发布时间】:2014-09-19 20:33:06
【问题描述】:

请帮我解决下一个问题:

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

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位(如果有小数点)并且在数字结束后立即有字符串模式,则返回包装器的对象 例如对于字符串

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

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

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

另一种仅与字符串模式不同的方法必须先是双数,小数点后最多两位数,其他都一样

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

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

【问题讨论】:

    标签: java regex parsing


    【解决方案1】:

    您可以像这样使用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);
    
        }
    
    }
    

    【讨论】:

    • 对不起,要求十进制数后面必须是字符串模式
    • 对于字符串“Giveme10.25litersofmilk”和索引 6,如果字符串模式仍然是“money”,则它必须为 null
    猜你喜欢
    • 2018-08-30
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多