2011-07-10 15 views
4

数字の0-9を0-9(devanagariスクリプト)に変換するRegExやその他の方法を探していました。私はasp.netを使用していますが、これを行うグローバリゼーションネームスペースではメソッドを見つけることができませんでした。ユニコード数字を英語からdevanagariに変換する

ご協力いただきまして誠にありがとうございます。はい場合

+2

Devanagariの数字も同じように配置されていると仮定すると、生のコードポイントにオフセットを追加するだけで、 "0" - "0"になることがあります。 –

+1

ええ。それは私が試してみたいものです。ありがとう! –

答えて

0

は、どのように次について、それぞれのラテン数字0..9マップに正確にdevanagari digit(私が正しくウィキペディアを理解していれば、私は、そう思います)=

を行います。

については
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()を確認することができます。また

(これはデバナーガリ桁に適している場合)、パラメータはなくstring sとchar秒かかりstring.Replace() function overloadを呼び出します。

+2

歴史的に、十進数の各ラテン数字は、devanagari数字から取得されたので、正しくマップされます。 これは非常に簡単な解決策ですが、かなりエレガントではありません。私が探していたものは、xslt http://www.w3schools.com/xpath/xpath_functions.asp#stringで使われているtranslate()関数と似たものです。 私が間違っていない場合は、より良い結果を得るためにstringの代わりにstringbuilderを使用してください。 ありがとうございました! –

1

見つかった同様の投稿here

ソースとデスティネーションの文化を知っているので、私のソリューションは少し異なります。だから私は数字配列をハードコードすることができます。

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

別の変更点は、私がdevD配列の代わりに年の数字を繰り返していることです。ほとんどの数字が10桁未満になるので、ほとんどの反復を保存します。私の場合、わずか4桁です。

似たような行に立ち往生している人には便利です。

関連する問題