`
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:阿拉伯语的数量是:Javaإ.د١٠
在运行Java8时要保留Java17格式
发布于 2022-11-15 02:59:29
我不知道Java 11和Java 17之间在本地化和国际化方面到底发生了什么变化,但经过一些简单的实验,我找到了一个简单的解决办法。按照以下步骤:
new.Locale.Builder().setLanguage("en").setRegion("AE").build();
"en"),并保留阿拉伯联合酋长国地区("AE"):locale =这导致了以下结果:Arabic Amount is: 10AED
dfSymbolReplacePattern从"د.إ.\u200F"到"AED"定义的替换。字符串dfSymbolReplacePattern = "AED";现在"AED"货币符号将被替换为:"AED"
https://stackoverflow.com/questions/74242161
复制相似问题