Ответ 1
Использование LINQ:
var count = jobId.Count(x => Char.IsDigit(x));
или
var count = jobId.Count(Char.IsDigit);
Итак, что я пытаюсь сделать, это номер задания, который выглядит как этот xxx123432, и подсчитывает цифры в записи, но не буквы. Затем я хочу присвоить число чисел переменной и использовать эту переменную, чтобы обеспечить проверку числа заданий, чтобы определить, находятся ли они в допустимом формате.
Я уже выяснил, как выполнить проверку, но я не знаю, как перейти к подсчету чисел в номере задания.
Большое спасибо за вашу помощь.
Использование LINQ:
var count = jobId.Count(x => Char.IsDigit(x));
или
var count = jobId.Count(Char.IsDigit);
int x = "xxx123432".Count(c => Char.IsNumber(c)); // 6
или
int x = "xxx123432".Count(c => Char.IsDigit(c)); // 6
Разница между этими двумя методами см. в Char.IsDigit и Char.IsNumber.
Что-то вроде этого может быть?
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));
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));
Это дает номер 234 в качестве вывода, если это то, что вам нужно.
Другие варианты linq/lambda просто подсчитывают символы, которые, я думаю, не совсем корректны, если у вас есть строка типа "B2B_MESSAGE_12344", потому что она будет считать 2 в B2B.
Но я не уверен, правильно ли понял, какое количество чисел означает. Это число чисел (другие ответы) или число, которое формирует число (этот ответ).