如何计算一串混合文本/数字中的数字

时间:2011-05-12 20:00:38

标签: c# parsing .net-3.5 string count

所以我要做的是拿一个工号,看起来像这个xxx123432,并计算条目中的数字,但不是字母。我想将数字的数量分配给变量,并使用该变量来提供对作业编号的检查,以确定它们是否采用有效格式。

我已经知道如何进行检查,但我不知道如何计算工号中的数字。

非常感谢你的帮助。

4 个答案:

答案 0 :(得分:32)

使用LINQ:

var count = jobId.Count(x => Char.IsDigit(x));

var count = jobId.Count(Char.IsDigit);

答案 1 :(得分:4)

int x = "xxx123432".Count(c => Char.IsNumber(c)); // 6

int x = "xxx123432".Count(c => Char.IsDigit(c)); // 6

这两种方法的区别在于Char.IsDigitChar.IsNumber

答案 2 :(得分:2)

这样的事可能吗?

string jobId = "xxx123432";
int digitsCount = 0;
foreach(char c in jobId)
{
  if(Char.IsDigit(c))
    digitsCount++;
}

你可以使用LINQ,就像这样:

string jobId = "xxx123432";
int digitsCount = jobId.Count(c => char.IsDigit(c));

答案 3 :(得分:0)

    string str = "t12X234";
    var reversed = str.Reverse().ToArray();
    int digits = 0;

    while (digits < str.Length &&
           Char.IsDigit(reversed[digits])) digits++;

    int num = Convert.ToInt32(str.Substring(str.Length - digits));

如果你需要的话,这就是num 234作为输出。

其他linq / lambda变体只计算我认为不完全正确的字符,如果你有一个像“B2B_MESSAGE_12344”这样的字符串,因为它会计算B2B中的2。

但我不确定我是否正确理解了数字的含义。是数字的数量(其他答案)还是数字形成的数字(这个答案)。