当前位置:  开发笔记 > 编程语言 > 正文

获取字符串上的数字组

如何解决《获取字符串上的数字组》经验,为你挑选了1个好方法。

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

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;

任何帮助,将不胜感激.



1> Dmitry Byche..:

我建议使用正则表达式通过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(); 

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有