数字の0-9を0-9(devanagariスクリプト)に変換するRegExやその他の方法を探していました。私はasp.netを使用していますが、これを行うグローバリゼーションネームスペースではメソッドを見つけることができませんでした。ユニコード数字を英語からdevanagariに変換する
ご協力いただきまして誠にありがとうございます。はい場合
数字の0-9を0-9(devanagariスクリプト)に変換するRegExやその他の方法を探していました。私はasp.netを使用していますが、これを行うグローバリゼーションネームスペースではメソッドを見つけることができませんでした。ユニコード数字を英語からdevanagariに変換する
ご協力いただきまして誠にありがとうございます。はい場合
は、どのように次について、それぞれのラテン数字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を呼び出します。
歴史的に、十進数の各ラテン数字は、devanagari数字から取得されたので、正しくマップされます。 これは非常に簡単な解決策ですが、かなりエレガントではありません。私が探していたものは、xslt http://www.w3schools.com/xpath/xpath_functions.asp#stringで使われているtranslate()関数と似たものです。 私が間違っていない場合は、より良い結果を得るためにstringの代わりにstringbuilderを使用してください。 ありがとうございました! –
見つかった同様の投稿here!
ソースとデスティネーションの文化を知っているので、私のソリューションは少し異なります。だから私は数字配列をハードコードすることができます。
string devYear = "";
string[] devD = { "०", "१", "२", "३", "४", "५", "६", "७", "८", "९" };
char[] digits = curYear.ToCharArray();
foreach (char ch in digits)
{
devYear += devD[int.Parse(ch.ToString())];
}
別の変更点は、私がdevD配列の代わりに年の数字を繰り返していることです。ほとんどの数字が10桁未満になるので、ほとんどの反復を保存します。私の場合、わずか4桁です。
似たような行に立ち往生している人には便利です。
Devanagariの数字も同じように配置されていると仮定すると、生のコードポイントにオフセットを追加するだけで、 "0" - "0"になることがあります。 –
ええ。それは私が試してみたいものです。ありがとう! –