我有一个由数字和字母组成的字符串,如下例所示:
string strFood = "123d 4hello12";
我想要完成的是获得123,4和12的所有数字组.
我试图通过LinQ做到这一点,但我没有得到数组结果,因为我的计划是获得数组然后完全添加它们是123 + 4 + 12,结果是139.
这是我到目前为止所尝试的但这不会导致字符串或整数组:
string[] strArr = strFood .GroupBy(y => Char.IsDigit(y)).Select(y => y.ToString()).ToArray();
我也尝试了这个,但这会返回一个字符串中的所有数字:
var foo = from a in strFood .ToCharArray() where Char.IsDigit(a) == true select a;
任何帮助,将不胜感激.
我建议使用正则表达式通过Linq查找所有具有聚合的组(匹配):
string strFood = "123d 4hello12"; var sum = Regex .Matches(strFood, "[0-9]+") // groups of integer numbers .OfType() .Select(match => int.Parse(match.Value)) // treat each group as integer .Sum(); // sum up
如果你想获得一个数组(以后总结):
int[] result = Regex .Matches(strFood, "[0-9]+") // groups of integer numbers .OfType() .Select(match => int.Parse(match.Value)) .ToArray(); ... var sum = result.Sum();