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

Posted

技术标签:

【中文标题】如何解析字符串以从中获取双倍值【英文标题】: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)

【问题讨论】:

【参考方案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

以上是关于如何解析字符串以从中获取双倍值的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串转换为字典以从中检索一个值?

解析以多种格式传递的数据......如何从中获取我需要的数据

解析数据框列以获取子字符串并返回值

如何解析 xml 并从 xml 字符串中获取数据?

需要解析来自其他网页的值。首先我需要调用其他网页并从中解析 XML 值

如何从json字符串中获取值