所以我要做的是拿一个工号,看起来像这个xxx123432,并计算条目中的数字,但不是字母。我想将数字的数量分配给变量,并使用该变量来提供对作业编号的检查,以确定它们是否采用有效格式。
我已经知道如何进行检查,但我不知道如何计算工号中的数字。
非常感谢你的帮助。
答案 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.IsDigit和Char.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。
但我不确定我是否正确理解了数字的含义。是数字的数量(其他答案)还是数字形成的数字(这个答案)。