2011-07-10 63 views
4

我正在尋找一些RegEx或任何其他方法將數字0-9轉換爲0-9(梵文腳本)。我正在使用asp.net,但無法在全球化名稱空間中找到任何方法。將unicode數字從英文轉換爲devanagari

任何幫助,非常感謝。

+2

假設梵文數字也被合理排列,您可能只需向原始代碼點「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.Replace() function overload,其中char s作爲參數而不是string s。

+2

從歷史上看,十進制數字系統中的每個拉丁數字都取自梵文數字,所以是的,它確實映射回來:) 這是一個非常簡單的解決方案,但不夠優雅。我正在尋找的東西類似於xslt http://www.w3schools.com/xpath/xpath_functions.asp#string中使用的translate()函數。 另外,如果我沒有弄錯,我們應該使用stringbuilder而不是string來獲得更好的結果。 謝謝! –

1

找到了相似的帖子here

雖然我知道源文化和目標文化,但我的解決方案有點不同。所以我可以對數字數組進行硬編碼。

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

另一個變化是,我通過一年的數字,而不是DEVD陣列迭代。由於大多數數字都小於10位數,所以節省了很少的迭代次數。在我的情況下,只有四位數字。

希望對於有人陷入類似路線有用。