货币小数点分隔符可以与区域设置不同。 将import java.text.DecimalFormatSymbols;始终视为分隔符可能很危险。即
╔════════════════╦═══════════════════╗
║ Currency ║ Sample ║
╠════════════════╬═══════════════════╣
║ USA ║ $1,222,333.44 USD ║
║ United Kingdom ║ £1.222.333,44 GBP ║
║ European ║ €1.333.333,44 EUR ║
╚════════════════╩═══════════════════╝
我认为正确的方法是:
默认情况下,通过import java.text.DecimalFormatSymbols;获取十进制字符Locale或指定的。
使用十进制字符烹饪正则表达式模式以便仅获取数字
在这里我是如何解决它的:
import java.text.DecimalFormatSymbols;
import java.util.Locale;
码:
public static String getDigit(String quote, Locale locale) {
char decimalSeparator;
if (locale == null) {
decimalSeparator = new DecimalFormatSymbols().getDecimalSeparator();
} else {
decimalSeparator = new DecimalFormatSymbols(locale).getDecimalSeparator();
}
String regex = "[^0-9" + decimalSeparator + "]";
String valueOnlyDigit = quote.replaceAll(regex, "");
try {
return valueOnlyDigit;
} catch (ArithmeticException | NumberFormatException e) {
Log.e(TAG, "Error in getMoneyAsDecimal", e);
return null;
}
return null;
}
我希望这可能有所帮助,'。