我在c#中有一个char:

char foo = '2';

现在我想把2变成一个整型。我发现皈依。ToInt32返回该字符的实际十进制值,而不是数字2。以下是可行的方法:

int bar = Convert.ToInt32(new string(foo, 1));

int。解析也只适用于字符串。

c#中没有本地函数可以在不使其成为字符串的情况下从char转换为int吗?我知道这是微不足道的,但这似乎很奇怪,没有本地直接进行转换。


当前回答

有人考虑过像这样使用int.Parse()和int.TryParse()吗

int bar = int.Parse(foo.ToString());

这样更好

int bar;
if (!int.TryParse(foo.ToString(), out bar))
{
    //Do something to correct the problem
}

这样更安全,更不容易出错

其他回答

有趣的答案,但医生说的不一样:

使用GetNumericValue方法 转换表示的Char对象 数值类型的数字。使用 和TryParse来转换 字符串中的字符转换为Char类型 对象。使用ToString转换Char类型 object转换为String对象。

http://msdn.microsoft.com/en-us/library/system.char.aspx

有人考虑过像这样使用int.Parse()和int.TryParse()吗

int bar = int.Parse(foo.ToString());

这样更好

int bar;
if (!int.TryParse(foo.ToString(), out bar))
{
    //Do something to correct the problem
}

这样更安全,更不容易出错

使用Uri.FromHex。 为了避免异常Uri.IsHexDigit。

char testChar = 'e';
int result = Uri.IsHexDigit(testChar) 
               ? Uri.FromHex(testChar)
               : -1;
char c = '1';
int i = (int)(c - '0');

你可以用它创建一个静态方法:

static int ToInt(this char c)
{
    return (int)(c - '0');
}

用这个:

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;
}