我在C#中处理一个需要使用阿拉伯数字的项目,但是它必须在数据库中存储为整数,我需要一个解决方案来将阿拉伯数字转换为C#中的int。 有任何解决方案或帮助吗? 提前谢谢
来自评论:
我有1,2,3,4等阿拉伯数字,必须转换为1,2,3或234转换为234
答案 0 :(得分:17)
使用此方法
private string toEnglishNumber(string input)
{
string EnglishNumbers = "";
for (int i = 0; i < input.Length; i++)
{
if (Char.IsDigit(input[i]))
{
EnglishNumbers += char.GetNumericValue(input, i);
}
else
{
EnglishNumbers += input[i].ToString();
}
}
return EnglishNumbers;
}
答案 1 :(得分:9)
unicode中的1,2,3,4等阿拉伯数字被编码为1632到1641范围内的字符。从每个阿拉伯语的unicode值中减去unicode for arabic zero(1632)数字字符来获取他们的数字值。将每个数字值乘以其位值,并将结果相加得到整数。
或者使用Regex.Replace
将带有阿拉伯数字的字符串转换为带有十进制数字的字符串,然后使用Int.Parse
将结果转换为整数。
答案 2 :(得分:7)
将阿拉伯数字转换为整数
的简单方法 string EnglishNumbers="";
for (int i = 0; i < arabicnumbers.Length; i++)
{
EnglishNumbers += char.GetNumericValue(arabicnumbers, i);
}
int convertednumber=Convert.ToInt32(EnglishNumbers);
答案 3 :(得分:7)
不幸的是,现在还无法通过传入适当的IFormatProvider
来解析完整的字符串表示(可能在即将发布的版本中)。但是,char
类型具有GetNumericValue
方法,可将任何数字Unicode字符转换为double。例如:
double two = char.GetNumericValue('٢');
Console.WriteLine(two); // prints 2
您可以使用它一次转换一个数字。
答案 4 :(得分:0)
获取数字的值,从中减去零字符,例如正常数字,'1'-'0' = 1
,'2'-'0' = 2
。等
对于多位数,你可以使用类似的东西
result =0;
foreach(char digit in number)
{
result *= 10; //shift the digit, multiply by ten for each shift
result += (digit - '0)'; //add the int value of the current digit.
}
如果您的号码使用阿拉伯字符,只需将'0'替换为阿拉伯语零。这适用于任何数字符号,只要该符号系统中的0-9连续编码。
答案 5 :(得分:0)
我知道这个问题有点陈旧,但我在我的一个项目中遇到了类似的情况并通过了这个问题并决定分享我的解决方案,这对我来说非常有效,并希望它能为其他人服务。< / p>
private string ConvertToWesternArbicNumerals(string input)
{
var result = new StringBuilder(input.Length);
foreach (char c in input.ToCharArray())
{
//Check if the characters is recognized as UNICODE numeric value if yes
if (char.IsNumber(c))
{
// using char.GetNumericValue() convert numeric Unicode to a double-precision
// floating point number (returns the numeric value of the passed char)
// apend to final string holder
result.Append(char.GetNumericValue(c));
}
else
{
// apend non numeric chars to recreate the orignal string with the converted numbers
result.Append(c);
}
}
return result.ToString();
}
现在您只需调用该函数即可返回西方阿拉伯数字。
答案 6 :(得分:0)
试试这个扩展:
e