在单行 C# 中将 String 转换为 Int

Ham*_*teu -2 c# string integer sum

我有一个字符串输入,例如:

1 3 4 1 2

我想把Sum数字变成整数。我尝试了以下代码:

using System;
                    
public class Program
{
    public static void Main()
    {
        string input2 = "1 3 4 1 1";
        string value2 = input2.Replace(" ", "+");
        int val = int.Parse(value2);
        
        Console.WriteLine(val);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是不正确的。有人对此有想法吗?谢谢。

Dmi*_*nko 7

您可以尝试将Split初始字符串 ( input2) 放入项目中,TryParse将它们放入相应的intbvalues 中,然后在LinqSum的帮助下将它们放入:

using System.Linq;

...

int val = value2 
  .Split(' ', StringSplitOptions.RemoveEmptyEntries)
  .Sum(item => int.TryParse(item, out int value) ? value : 0);
Run Code Online (Sandbox Code Playgroud)

这里所有无效的项(即不能解析为整数的项)都被忽略(我们将它们转换为0)。在这种情况下您可能希望抛出异常:

using System.Linq;

...

int val = value2 
  .Split(' ', StringSplitOptions.RemoveEmptyEntries)
  .Sum(item => int.Parse(item));
Run Code Online (Sandbox Code Playgroud)

最后,修改了您的代码(我们可以使用一个老技巧DataTable.Compute):

using System.Data;

...

string input2 = "1 3 4 1 1";

string formula = input2.Replace(' ', '+');

using (DataTable table = new DataTable())
{
    int val = Convert.ToInt32(table.Compute(formula, null));

    Console.WriteLine(val);
}
Run Code Online (Sandbox Code Playgroud)