`
public class TestCurrency {
public static void main(String []args) {
int decimalPrecision=0;
String currencySymbol="إ.د";
String dfSymbolReplacePattern = "د.إ.u200F";
Locale locale = new Locale.Builder().setLanguage("ar").setRegion("AE").build();
final NumberFormat nf = NumberFormat.getCurrencyInstance(locale);
final DecimalFormat df = (DecimalFormat) nf;
df.setMinimumFractionDigits(decimalPrecision);
df.setMaximumFractionDigits(decimalPrecision);
df.setRoundingMode(RoundingMode.HALF_UP);
final String positivePrefix = df.getPositiveSuffix().replace(dfSymbolReplacePattern, currencySymbol);
final String positiveSuffix = df.getPositivePrefix().replace(dfSymbolReplacePattern, currencySymbol);
final String negativePrefix = df.getNegativeSuffix().replace(dfSymbolReplacePattern, currencySymbol);
final String negativeSuffix = df.getNegativePrefix().replace(dfSymbolReplacePattern, currencySymbol);
df.setPositivePrefix(positivePrefix);
df.setNegativePrefix(negativePrefix);
df.setPositiveSuffix(positiveSuffix);
df.setNegativeSuffix(negativeSuffix);
System.out.println("Arabic Amount is: "+df.format(10.0));
}
}
`
Java 8:阿拉伯语金额为:10إJava 17:阿拉伯语金额为:
想要在Java17 上运行时保持Java8的格式
我不知道Java 11和Java 17在本地化和国际化方面到底发生了什么变化,但经过一些简短的实验,我找到了一个简单的解决方法。遵循以下步骤:
- 将区域设置语言更改为英语(
"en"
(并保留阿拉伯联合酋长国地区("AE"
(:
结果如下:Locale locale = new.Locale.Builder().setLanguage("en").setRegion("AE").build();
Arabic Amount is: 10AED
- 将
dfSymbolReplacePattern
定义的替换从"د.إ.u200F"
更改为"AED"
。
现在String dfSymbolReplacePattern = "AED";
"AED"
货币符号将被替换:Arabic Amount is: 10إ.د