4

RegEx またはその他の方法で、0 ~ 9 の数字を ०-९ (デーバナーガリー スクリプト) に変換する方法を探していました。私はasp.netを使用していますが、これを行うグローバリゼーション名前空間にメソッドが見つかりませんでした。

どんな助けでも大歓迎です。

4

2 に答える 2

1

ここで同様の投稿を見つけました!

ソースと宛先の文化を知っているので、私の解決策は少し異なります。したがって、数字の配列をハードコーディングできます。

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

もう 1 つの変更点は、devD 配列の代わりに年の数字を反復処理していることです。ほとんどの数値は 10 桁未満になるため、反復回数が少なくなります。私の場合、わずか4桁です。

同様の行で立ち往生している人に役立つことを願っています。

于 2012-02-21T14:50:42.507 に答える
0

各ラテン数字 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ます。

さらに (デバナーガリー数字に適している場合)、s ではなく s をパラメーターとして受け取るstring.Replace()関数オーバーロードを 呼び出します。charstring

于 2011-07-10T14:36:36.660 に答える