Asp.net 将unicode数字从英语转换为devanagari
我正在寻找一些正则表达式或任何其他方法来将数字0-9转换为०-९ (德瓦纳加里手稿)。我正在使用asp.net,但在全球化名称空间中找不到执行此操作的任何方法Asp.net 将unicode数字从英语转换为devanagari,asp.net,unicode,globalization,transliteration,Asp.net,Unicode,Globalization,Transliteration,我正在寻找一些正则表达式或任何其他方法来将数字0-9转换为०-९ (德瓦纳加里手稿)。我正在使用asp.net,但在全球化名称空间中找不到执行此操作的任何方法 非常感谢您的帮助。每一个拉丁数字0..9是否正好对应于a(如果我正确理解维基百科,我确实这么认为)= 如果是,请说明以下内容: public static string ConvertDigits( string s ) { return s .Replace("0", "०") .Replace(
非常感谢您的帮助。每一个拉丁数字0..9是否正好对应于a(如果我正确理解维基百科,我确实这么认为)= 如果是,请说明以下内容:
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()
此外(如果这适用于devanagari数字),调用将char
s作为参数而不是string
s作为参数的
我的解决方案有点不同,因为我知道源和目标文化。所以我可以硬编码数字数组
string devYear = "";
string[] devD = { "०", "१", "२", "३", "४", "५", "६", "७", "८", "९" };
char[] digits = curYear.ToCharArray();
foreach (char ch in digits)
{
devYear += devD[int.Parse(ch.ToString())];
}
另一个变化是,我正在迭代年份数字,而不是devD数组。节省少量迭代,因为大多数数字将小于10位。就我而言,只有四位数
希望这对在类似线路上遇到麻烦的人有用。您只需在原始代码点上添加一个偏移量,०' - '0'
,假设德瓦纳加里数字也排列在一起。是的。这是我要试试的。谢谢从历史上看,十进制数字系统中的每个拉丁数字都是从devanagari数字中提取的,所以是的,它确实正确地映射回:)这是一个非常简单的解决方案,但并不十分优雅。我想要的是类似于xslt中使用的translate()函数的东西。此外,如果我没有弄错的话,我们应该使用stringbuilder而不是string来获得更好的结果。无论如何谢谢你!