Asp.net 将unicode数字从英语转换为devanagari

Asp.net 将unicode数字从英语转换为devanagari,asp.net,unicode,globalization,transliteration,Asp.net,Unicode,Globalization,Transliteration,我正在寻找一些正则表达式或任何其他方法来将数字0-9转换为०-९ (德瓦纳加里手稿)。我正在使用asp.net,但在全球化名称空间中找不到执行此操作的任何方法 非常感谢您的帮助。每一个拉丁数字0..9是否正好对应于a(如果我正确理解维基百科,我确实这么认为)= 如果是,请说明以下内容: public static string ConvertDigits( string s ) { return s .Replace("0", "०") .Replace(

我正在寻找一些正则表达式或任何其他方法来将数字0-9转换为०-९ (德瓦纳加里手稿)。我正在使用asp.net,但在全球化名称空间中找不到执行此操作的任何方法


非常感谢您的帮助。

每一个拉丁数字0..9是否正好对应于a(如果我正确理解维基百科,我确实这么认为)=

如果是,请说明以下内容:

public static string ConvertDigits( string s )
{
    return s
        .Replace("0", "०")
        .Replace("1", "१")
        .Replace("2", "२")
        .Replace("3", "३")
        .Replace("4", "४")
        .Replace("5", "५")
        .Replace("6", "६")
        .Replace("7", "७")
        .Replace("8", "८")
        .Replace("9", "९");
}
为了优化,您可以在调用
string.Replace
函数之前检查
string.IsNullOrEmpty()

此外(如果这适用于devanagari数字),调用将
char
s作为参数而不是
string
s作为参数的

我的解决方案有点不同,因为我知道源和目标文化。所以我可以硬编码数字数组

        string devYear = "";
        string[] devD = { "०", "१", "२", "३", "४", "५", "६", "७", "८", "९" };
        char[] digits = curYear.ToCharArray();
        foreach (char ch in digits)
        {
            devYear += devD[int.Parse(ch.ToString())];
        }
另一个变化是,我正在迭代年份数字,而不是devD数组。节省少量迭代,因为大多数数字将小于10位。就我而言,只有四位数


希望这对在类似线路上遇到麻烦的人有用。

您只需在原始代码点上添加一个偏移量,
०' - '0'
,假设德瓦纳加里数字也排列在一起。是的。这是我要试试的。谢谢从历史上看,十进制数字系统中的每个拉丁数字都是从devanagari数字中提取的,所以是的,它确实正确地映射回:)这是一个非常简单的解决方案,但并不十分优雅。我想要的是类似于xslt中使用的translate()函数的东西。此外,如果我没有弄错的话,我们应该使用stringbuilder而不是string来获得更好的结果。无论如何谢谢你!