如何解析字符串以从中获取双倍值
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】:您可以像这样使用DecimalFormat
和ParsePosition
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以上是关于如何解析字符串以从中获取双倍值的主要内容,如果未能解决你的问题,请参考以下文章
解析以多种格式传递的数据......如何从中获取我需要的数据