下面列出了java.text.DecimalFormatSymbols#getMonetaryDecimalSeparator ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Configure this instance with values from a {@link Locale}.
*/
public MonetaryFormat withLocale(Locale locale) {
DecimalFormatSymbols dfs = new DecimalFormatSymbols(locale);
char negativeSign = dfs.getMinusSign();
char zeroDigit = dfs.getZeroDigit();
char decimalMark = dfs.getMonetaryDecimalSeparator();
return new MonetaryFormat(negativeSign, positiveSign, zeroDigit, decimalMark, minDecimals, decimalGroups,
shift, roundingMode, codes, codeSeparator, codePrefixed);
}
/**
* Configure this instance with values from a {@link Locale}.
*/
public MonetaryFormat withLocale(Locale locale) {
DecimalFormatSymbols dfs = new DecimalFormatSymbols(locale);
char negativeSign = dfs.getMinusSign();
char zeroDigit = dfs.getZeroDigit();
char decimalMark = dfs.getMonetaryDecimalSeparator();
return new MonetaryFormat(negativeSign, positiveSign, zeroDigit, decimalMark, minDecimals, decimalGroups,
shift, roundingMode, codes, codeSeparator, codePrefixed);
}
/***
* If user does not provide a valid locale it throws IllegalArgumentException.
*
* If throws an IllegalArgumentException the locale sets to default locale
*/
private void initSettings() {
boolean success = false;
while (!success) {
try {
if (fractionDigit == 0) {
fractionDigit = Currency.getInstance(locale).getDefaultFractionDigits();
}
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
if (mGroupDivider > 0)
symbols.setGroupingSeparator(mGroupDivider);
groupDivider = symbols.getGroupingSeparator();
if (mMonetaryDivider > 0)
symbols.setMonetaryDecimalSeparator(mMonetaryDivider);
monetaryDivider = symbols.getMonetaryDecimalSeparator();
currencySymbol = symbols.getCurrencySymbol();
DecimalFormat df = (DecimalFormat) DecimalFormat.getCurrencyInstance(locale);
numberFormat = new DecimalFormat(df.toPattern(), symbols);
if (mDecimalPoints > 0) {
numberFormat.setMinimumFractionDigits(mDecimalPoints);
}
success = true;
} catch (IllegalArgumentException e) {
Log.e(getClass().getCanonicalName(), e.getMessage());
locale = getDefaultLocale();
}
}
}
/**
* Configure this instance with values from a {@link Locale}.
*/
public MonetaryFormat withLocale(Locale locale) {
DecimalFormatSymbols dfs = new DecimalFormatSymbols(locale);
char negativeSign = dfs.getMinusSign();
char zeroDigit = dfs.getZeroDigit();
char decimalMark = dfs.getMonetaryDecimalSeparator();
return new MonetaryFormat(negativeSign, positiveSign, zeroDigit, decimalMark, minDecimals, decimalGroups,
shift, roundingMode, codes, codeSeparator, codePrefixed);
}
private String getNumberPattern(String token, DecimalFormat format) {
// Parse the token for
int first = -1;
int last = -1;
DecimalFormatSymbols syms = format.getDecimalFormatSymbols();
char[] chars = token.toCharArray();
int nonMatching = 0;
for(int i=0; i<chars.length;i++){
if(chars[i] ==syms.getMonetaryDecimalSeparator() ||
chars[i] ==syms.getMonetaryDecimalSeparator() ||
chars[i] ==syms.getDecimalSeparator() ||
chars[i] ==syms.getGroupingSeparator() ||
chars[i] ==syms.getMinusSign() ||
chars[i] ==syms.getPercent() ||
chars[i] ==syms.getPerMill() ||
chars[i] ==syms.getZeroDigit() ||
chars[i] ==syms.getDigit()){
if(first<0)first = i;
last = i;
nonMatching = 0;
}else{
nonMatching++;
}
if(last!=-1 && first<last && nonMatching>2){
break;
}
}
if(last!=-1 && first<last){
return token.substring(first, last+1);
}
return null;
}