【问题标题】:Convert unicode digits from english to devanagari将 unicode 数字从英文转换为梵文
【发布时间】:2011-07-10 14:23:44
【问题描述】:

我正在寻找一些正则表达式或任何其他方法将数字 0-9 转换为०-९(天城文脚本)。我正在使用 asp.net,但在全球化命名空间中找不到执行此操作的任何方法。

非常感谢任何帮助。

【问题讨论】:

  • 假设梵文数字也连续排列,您可能只需在原始代码点'०' - '0' 上添加一个偏移量即可。
  • 是的。那是我会尝试的。谢谢!

标签: asp.net unicode globalization transliteration


【解决方案1】:

找到类似的帖子here

虽然我知道源文化和目的地文化,但我的解决方案有点不同。所以我可以对数字数组进行硬编码。

        string devYear = "";
        string[] devD = { "०", "१", "२", "३", "४", "५", "६", "७", "८", "९" };
        char[] digits = curYear.ToCharArray();
        foreach (char ch in digits)
        {
            devYear += devD[int.Parse(ch.ToString())];
        }

另一个变化是我正在迭代年份数字而不是 devD 数组。节省少量迭代,因为大多数数字将小于 10 位。就我而言,只有四位数。

希望对遇到类似问题的人有用。

【讨论】:

    【解决方案2】:

    每个拉丁数字 0..9 是否准确映射到 devanagari digit(如果我正确理解 Wikipedia,我认为是这样)=

    如果是,那么以下情况如何:

    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()

    此外(如果这适用于梵文数字),请调用以chars 而不是strings 作为参数的string.Replace() function overload

    【讨论】:

    • 从历史上看,十进制数字系统中的每个拉丁数字都取自梵文数字,所以是的,它确实可以正确映射回来:) 这是一个非常简单的解决方案,但不是很优雅。我正在寻找的是类似于 xslt w3schools.com/xpath/xpath_functions.asp#string 中使用的 translate() 函数的东西。另外,如果我没记错的话,我们应该使用 stringbuilder 而不是 string 以获得更好的结果。还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2015-08-31
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2016-10-08
    • 2010-11-04
    • 2015-01-31
    相关资源
    最近更新 更多