我正在尝试从此字符串中获取当前金额,但是我只想要双倍。
String total = "Your current total is +$35.25";
我已经尝试过此代码,但是
$
表示行尾并且它总是返回0.00
,所以我怎么只能得到35.25
double amount = getNumberFromString("(\\$\\d\\d.?\\d?\\d?)\\s?[^Xx]?", total);
public double getNumberFromString(String value, final String s)
{
double n = 0.0;
Matcher M = Pattern.compile(value).matcher(s);
while (((Matcher)M).find())
{
try {
n = Double.parseDouble(((Matcher)M).group(1));
//Log.e(TAG, "Number is : " + ((Matcher)M).group(1));
}
catch (Exception ex) {
n = 0.0;
}
}
return n;
}
最佳答案
您的代码引发异常,因为您的正则表达式正在捕获组#1中的非数字$
。还要注意,您的代码正在执行不必要的强制转换,可以避免。
以下代码应为您工作:
String total = "Your current total is +$35.25";
double amount = getNumberFromString("\\$(\\d+(?:\\.\\d+)?)", total);
public double getNumberFromString(String value, final String s) {
double n = 0.0;
Matcher m = Pattern.compile(value).matcher(s);
while (m.find()) {
try {
n = Double.parseDouble(m.group(1));
}
catch (Exception ex) {
n = 0.0;
}
}
return n;
}