gpt4 book ai didi

java - Android 货币格式返回不同的货币符号

转载 作者:行者123 更新时间:2023-11-30 07:43:10 24 4
gpt4 key购买 nike

我正在尝试在文本编辑器中进行货币格式设置。我写了一些代码,但遇到了问题。 NumberFormat 在不同设备上返回不同的货币符号。

这是我的源代码:

    final NumberFormat nf = NumberFormat.getInstance(Locale.US);
transfer_maney.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

if (!s.toString().equals(current)) {
transfer_maney.removeTextChangedListener(this);

String cleanString = s.toString().replaceAll("[$,.]", "");


double parsed = Double.parseDouble(cleanString);
String formatted = nf.getCurrencyInstance().format((parsed / 100));
current = formatted;

if (formatted.contains("$")) {
formatted = formatted.replace("$", "");
}
transfer_maney.setText(formatted);
transfer_maney.setSelection(formatted.length());

transfer_maney.addTextChangedListener(this);
}

}

@Override
public void afterTextChanged(Editable s) {

}
});

我的目标是始终返回 $ 符号,然后将其删除。正如我所说,在不同的设备上我有不同的符号。在某些设备上,我得到一个 $ 符号,在某些 £ 符号上。我应该在代码中更改什么,以便它始终返回美元符号 ($),以便我可以将其删除?

我尝试更改区域设置,但不起作用。如果有人知道解决方案请帮助我。

谢谢大家

最佳答案

问题是您使用的是这样工作的静态方法 NumberFormat.getCurrencyInstance():

public final static NumberFormat getCurrencyInstance() {
return getInstance(Locale.getDefault(Locale.Category.FORMAT), CURRENCYSTYLE);
}

如您所见,它返回一个具有默认LocaleNumberFormat 对象,而不是您正在设置的Locale。这意味着它取决于用户设备设置。

<小时/>

因此,不要在使用默认 Locale 的静态返回实例上调用 format:

nf.getCurrencyInstance().format(parsed / 100);

这实际上等同于:

NumberFormat.getCurrencyInstance().format(parsed / 100);

您的实例与设置的区域设置结合使用:

final NumberFormat nf = NumberFormat.getInstance(Locale.US);
String formatted = nf.format(parsed / 100);

关于java - Android 货币格式返回不同的货币符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com