货币小数点分隔符可以不同于区域设置。 考虑可能是危险的. 作为分隔符总是。 即
╔════════════════╦═══════════════════╗ ║ Currency ║ Sample ║ ╠════════════════╬═══════════════════╣ ║ USA ║ $1,222,333.44 USD ║ ║ United Kingdom ║ £1.222.333,44 GBP ║ ║ European ║ €1.333.333,44 EUR ║ ╚════════════════╩═══════════════════╝
我认为正确的方法是:
默认情况下,通过DecimalFormatSymbols获取十进制字符或指定一个。
使用十进制字符来制作正则expression式以仅获取数字
在这里我是如何解决它的:
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; }
我希望这可以帮助,'。