语言/文化中的计数和订购系统

时间:2011-10-20 20:26:50

标签: .net numbers

是否有原生的.NET方法可以在各种计数/订购系统,语言和文化中查找数字。例如,我有数字1,2和3.如果我想用阿拉伯语,我可以使用NumberInfo,例如。

Public Sub PrintNumbers()
    Dim currentCI As CultureInfo = New CultureInfo("ar-LB")
    Dim nfi As NumberFormatInfo = currentCI.NumberFormat
    Dim nativeDigitList As String() = nfi.NativeDigits
    For i = 1 To 3
        System.Diagnostics.Debug.WriteLine(String.Format("{0}: {1}", i, nativeDigitList(i)))
    Next
End Sub

打印:1:1,2:2,3:3

这是我正在寻找的一个良好的开端,但我正在寻找一个更完整的系统,为语言/文化中的其他计数系统生成原生数字(和其他计数器)。

原生数字,如在.NET中使用相同的中文代码(“zh-CN”)产生1:1,2:2,3:3.但我正在寻找1:一,2:二, 3:三。甚至是中国金融:1:壹,2:贰,3:叁。 (注意:简体中文样本)。

在英语中,我们也使用罗马数字:1:I,2:II,3:III。

还有非数字计数系统,例如1:A,2:B,英语为3:C,阿拉伯语为Ê,Ë或阿拉伯语为Abjad系统:,ج,د。

我确信还有很多其他方法可以统计各种语言,脚本和文化。 NativeDigits数组不提供高于9的计数,也不提供其他文化/脚本计数系统。

所以问题是:你知道在.NET中实现这一点的任何方法我可能无法找到或者已经完成了一个开源项目的工作,这将允许我指定一种文化(如“fa-IR”),一个数字(如“49”)和该文化支持的计数系统?

所以如果它是“en-US”,“27”和“abc-system”,它会给我“aa”。

2 个答案:

答案 0 :(得分:0)

我以前看过这个,并找到了和你一样的东西。

你可以做的关闭是使用NativeDigits将西方数字翻译成它们的等价物 - BCL中没有更全面的内容,我也不知道任何实现这种事物的库。

答案 1 :(得分:0)

除非有更好的答案,否则我能找到的最好的计数列表是http://www.w3.org/TR/css3-lists。虽然不是.NET,但我可以很简单地在.NET中实现。