【问题标题】:How to cast an 'int' to a 'char' in C#?如何在 C# 中将“int”转换为“char”?
【发布时间】:2012-06-04 12:26:49
【问题描述】:

我有一个混合了数字和字母的字符串变量。我想创建一个新字符串,它只包含前一个字符串变量的 int 值。所以我找到了两种将int 转换为char 的方法。但是,它们不起作用。这是我尝试过的方法

string onlyNumberString = "";
foreach (char onlyNum in puzzleData)
{
    for (int i = 1; i < 10; i++)
    {
        if (onlyNum == (char)i)
        {
            onlyNumberString += onlyNum;
        }
    }
}

string onlyNumberString = "";
foreach (char onlyNum in puzzleData)
{
    for (int i = 1; i < 10; i++)
    {
        if (onlyNum == Convert.ToChar(i))
        {
            onlyNumberString += onlyNum;
        }
    }
}

【问题讨论】:

    标签: c# casting char int


    【解决方案1】:

    改用 Char.IsDigit,简单得多。

    StringBuilder onlyNumber = new StringBuilder();
    foreach (char onlyNum in puzzleData)
    {
        if (Char.IsDigit(onlyNum))
        {
            onlyNumber.Append(onlyNum);
        }
    }
    

    【讨论】:

    • 如果我们可以应用 linq 或 regex 来完成这项工作,那么循环不是一个好的选择。
    • 您当然是对的,但是问题是关于字符和整数(特别是检测字符是否为数字),所以我本着问题的精神回答了。
    【解决方案2】:
    int iNum = 2;
    
    char cChar = iNum.ToString()[0];
    

    当 0

    【讨论】:

    • char 无论如何都是一个单例值,除非我们处理 ASCII 码,否则我们不能将 2 位数字转换为单个字符。 :p
    【解决方案3】:

    您可以直接将int 转换为char

    var myChar = (char)20;
    

    但我建议使用正则表达式做你想做的事:

    var onlyNumerals = Regex.Replace(myString, @"[^0-9]", "");
    

    以上内容将用空格替换任何不是 0-9 的字符。

    另一种选择,使用 LINQ 和 char.IsDigit

     var onlyNumeral = new string(myString.Where(c => Char.IsDigit(c)).ToArray());
    

    【讨论】:

    • 哦不知道第二个。谢谢你
    • 转换为 char 会给你 ASCII 字符。例如,(char)20 返回DC4 (Device Control 4)。 OP 的目标是将'5' 转换为5
    【解决方案4】:

    你可以这样做:

    string justNumbers = new String(text.Where(Char.IsDigit).ToArray());
    

    【讨论】:

    • ... text.Where(c=&gt;Char.IsDigit(c)) ... ;-)
    • 欢迎来到 Stack Overflow!请不要只发布一行代码。解释一下。 -1
    • @Manishearth 您可以使用 cmets 提出建议,但不支持投票,请先阅读上面的投票常见问题解答。 stackoverflow.com/privileges/vote-down
    • @Manishearth 你认为这很草率吗?或者不努力:)
    • @Manishearth 在没有 cmets 的情况下为其他答案投票。
    【解决方案5】:

    几种方法:

    (char)int
    

    或者

    int.Parse(char.ToString())
    

    或者

    Convert.ToChar(int);
    

    【讨论】:

    • 我已经尝试了其中的 2 个。他们不工作。第二个我没有尝试,我不能在布尔值上使用它。
    • 投射到char 会给你ASCII字符。 OP 的目标是将'5' 转换为5
    猜你喜欢
    • 2017-11-21
    • 2015-07-11
    • 1970-01-01
    • 2011-03-31
    • 2017-01-18
    • 2014-02-07
    • 2013-08-10
    • 2018-02-10
    相关资源
    最近更新 更多