如何在C#中将部分字符串转换为int?

pur*_*ppc 2 c# string int

static void Main(string[] args)
{
    string foo = "jason123x40";
    char[] foo2 = foo.ToCharArray();
    string foo3 = "";

    for (int i = 0; i < foo2.Length; i++)
    {
        int num = 0;
        Int32.TryParse(foo2[i].ToString(), out num);
        if (num != 0)
        {
            foo3 += num.ToString();
        }
    }
    Console.WriteLine(foo3);
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

所以假设我有一个名为"john10smith250"的字符串.结果应为"10250".但是我会用我的代码获得"125".

我过滤掉0的原因是因为我不希望任何非数字字符被视为零.

有没有更好的方法将字符串的一部分转换为int?

Sel*_*enç 8

使用LINQ:

var myString = "john10smith250";
var myNumbers = myString.Where(x => char.IsDigit(x)).ToArray();
var myNewString = new String(myNumbers);
Run Code Online (Sandbox Code Playgroud)

  • @puretppc,如果你问`var x = blah`在哪里没有.它在`x =>`中声明并用于内联.它的范围只适用于那些parens. (2认同)
  • @puretppc,如果你不知道linq和lambda语句,你应该学习.如果你看到它们很酷并且它们可以帮助你节省大量的工作:) (2认同)
  • @puretppc我不是效率方面的专家,但这取决于我的想法.在你的情况下可能没关系.但是在最大的清单上它应该是重要的.没有代码会减少痛苦 (2认同)