我有一个由数字和字母组成的字符串,如下例所示:
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)
任何帮助,将不胜感激.
我建议使用正则表达式通过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)