NumberFormat 不能用作系统区域设置的千位分隔符?

Posted

技术标签:

【中文标题】NumberFormat 不能用作系统区域设置的千位分隔符?【英文标题】:NumberFormat doesn't work as a thousand separator for system locale? 【发布时间】:2018-03-26 07:47:26 【问题描述】:
// above onCreate
private DecimalFormat decimalFormat =(DecimalFormat) 
NumberFormat.getInstance();

// inside my textWatcher

String[] splitted = originalString.split("((?<=[-+x÷])|(?=[-+.x÷]))");

                StringBuilder formatted = new StringBuilder();

                for (String word : splitted) 
                    try 
                        BigInteger num = new BigInteger(word);
                        formatted.append(decimalFormat.format(num));

                     catch (NumberFormatException e) 
                        formatted.append(word);
                    
                

当我使用尼泊尔语时,我将一个数字作为字符串变量,并希望用千位分隔符(如 2345678)显示为 23,45,678。糟糕的是,代码的工作方式如下 २,३४५,६७८ 为 2345678。

令人惊讶的是,这适用于作为系统语言环境的印地语语言,并且可以显示 23,45,678。为什么不是尼泊尔语??

【问题讨论】:

根据这个链接,有什么问题吗? en.wikipedia.org/wiki/Numbers_in_Nepali_language 逗号放置有误。当用户在尼泊尔语言环境中时,我想显示数字 [0-9],并带有逗号,例如 23,45,678。 【参考方案1】:

试试这个代码:

<NumberFormat thousandSeperator="." decimalSeperator="," onKeyDown = (e) => 

const key, target = e;
const selectionStart, value = target;
if (key === '.') 
 e.preventDefault();
 target.value = `$value.substr(0, 
 selectionStart),$value.substr(selectionStart, value.length)`; 
  
 />

【讨论】:

那是 javascript 吗?

以上是关于NumberFormat 不能用作系统区域设置的千位分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

Java 中非默认语言环境的 NumberFormat 解析不正确

如何显示或隐藏数字中的千位分隔符

微服务注册中心如何承载大型系统的千万级访问?

CultureInfo提供有关特定区域性的信息,包括区域性的名称语言简称书写系统使用的日历以及对日期和排序字符串的格式化字符串设置。

如何确保 Intl.NumberFormat 在使用同一国家/地区时不显示货币代码?

根据区域设置的数字格式(逗号分隔)