获取字符串上的数字组

Wil*_* Jr 0 c# regex linq

我有一个由数字和字母组成的字符串,如下例所示:

string strFood = "123d 4hello12";
Run Code Online (Sandbox Code Playgroud)

我想要完成的是获得123,4和12的所有数字组.

我试图通过LinQ做到这一点,但我没有得到数组结果,因为我的计划是获得数组然后完全添加它们是123 + 4 + 12,结果是139.

这是我到目前为止所尝试的但这不会导致字符串或整数组:

string[] strArr =
            strFood .GroupBy(y => Char.IsDigit(y)).Select(y => y.ToString()).ToArray(); 
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个,但这会返回一个字符串中的所有数字:

var foo = from a in strFood .ToCharArray() where Char.IsDigit(a) == true select a;
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Dmi*_*nko 5

我建议使用正则表达式通过Linq查找所有具有聚合的组(匹配):

string strFood = "123d 4hello12";

var sum = Regex
  .Matches(strFood, "[0-9]+") // groups of integer numbers
  .OfType<Match>()
  .Select(match => int.Parse(match.Value)) // treat each group as integer
  .Sum(); // sum up
Run Code Online (Sandbox Code Playgroud)

如果你想获得一个数组(以后总结):

int[] result = Regex
  .Matches(strFood, "[0-9]+") // groups of integer numbers
  .OfType<Match>()
  .Select(match => int.Parse(match.Value))
  .ToArray();

...

var sum = result.Sum(); 
Run Code Online (Sandbox Code Playgroud)