我在c#中有一个char:
char foo = '2';
现在我想把2变成一个整型。我发现皈依。ToInt32返回该字符的实际十进制值,而不是数字2。以下是可行的方法:
int bar = Convert.ToInt32(new string(foo, 1));
int。解析也只适用于字符串。
c#中没有本地函数可以在不使其成为字符串的情况下从char转换为int吗?我知道这是微不足道的,但这似乎很奇怪,没有本地直接进行转换。
我在c#中有一个char:
char foo = '2';
现在我想把2变成一个整型。我发现皈依。ToInt32返回该字符的实际十进制值,而不是数字2。以下是可行的方法:
int bar = Convert.ToInt32(new string(foo, 1));
int。解析也只适用于字符串。
c#中没有本地函数可以在不使其成为字符串的情况下从char转换为int吗?我知道这是微不足道的,但这似乎很奇怪,没有本地直接进行转换。
当前回答
这将转换为整数并处理unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
你可以在这里阅读更多。
其他回答
默认情况下使用UNICODE,所以我建议使用faulty的方法
int bar = int. parse (foo.ToString());
尽管下面的数值对于数字和基本拉丁字符是相同的。
有趣的答案,但医生说的不一样:
使用GetNumericValue方法 转换表示的Char对象 数值类型的数字。使用 和TryParse来转换 字符串中的字符转换为Char类型 对象。使用ToString转换Char类型 object转换为String对象。
http://msdn.microsoft.com/en-us/library/system.char.aspx
当字符不是ASCII数字时,基于结果的一些方法的比较:
char c1 = (char)('0' - 1), c2 = (char)('9' + 1);
Debug.Print($"{c1 & 15}, {c2 & 15}"); // 15, 10
Debug.Print($"{c1 ^ '0'}, {c2 ^ '0'}"); // 31, 10
Debug.Print($"{c1 - '0'}, {c2 - '0'}"); // -1, 10
Debug.Print($"{(uint)c1 - '0'}, {(uint)c2 - '0'}"); // 4294967295, 10
Debug.Print($"{char.GetNumericValue(c1)}, {char.GetNumericValue(c2)}"); // -1, -1
真正的方法是:
int theNameOfYourInt = (int).Char.GetNumericValue(theNameOfYourChar);
" namameofyourint " -你想要你的char被转换成的int。
" namameofyourchar " -你想要使用的Char,因此它将被转换为int型。
其他的都不要管。
用这个:
public static string NormalizeNumbers(this string text)
{
if (string.IsNullOrWhiteSpace(text)) return text;
string normalized = text;
char[] allNumbers = text.Where(char.IsNumber).Distinct().ToArray();
foreach (char ch in allNumbers)
{
char equalNumber = char.Parse(char.GetNumericValue(ch).ToString("N0"));
normalized = normalized.Replace(ch, equalNumber);
}
return normalized;
}