请帮我解决下一个问题:
有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)
答案 0 :(得分:2)
您可以像这样使用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);
}
}