Преобразование цифр Юникода из английского в деванагари - PullRequest
4 голосов
/ 10 июля 2011

Я искал какой-нибудь RegEx или любой другой метод для преобразования цифр 0-9 в ०-९ (скрипт деванагари).Я использую asp.net, но не смог найти какой-либо метод в пространстве имен глобализации, который делает это.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Нашел похожий пост здесь !

Мое решение немного отличается, хотя я знаю источник и культуру назначения.Поэтому я могу жестко закодировать массив цифр.

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

Другое изменение заключается в том, что я перебираю цифры года вместо массива devD.Сохраняет несколько итераций, так как большинство чисел будет меньше 10 цифр.В моем случае только четыре цифры.

Надеюсь, это будет полезно для тех, кто застрял на похожих строках.

0 голосов
/ 10 июля 2011

Отображает ли каждая латинская цифра 0..9 точно цифру деванагари (я так думаю, если я правильно понимаю Википедию) =

Если да, как насчет следующего:

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.IsNullOrEmpty() перед вызовом функции string.Replace.

Кроме того (если это подходит для цифры деванагари), вызовите перегруженную функцию , которая принимает в качестве параметров char с, а не string с.

...