Как я могу подсчитать числа в строке смешанного текста/чисел

Итак, что я пытаюсь сделать, это номер задания, который выглядит как этот xxx123432, и подсчитывает цифры в записи, но не буквы. Затем я хочу присвоить число чисел переменной и использовать эту переменную, чтобы обеспечить проверку числа заданий, чтобы определить, находятся ли они в допустимом формате.

Я уже выяснил, как выполнить проверку, но я не знаю, как перейти к подсчету чисел в номере задания.

Большое спасибо за вашу помощь.

Ответ 1

Использование LINQ:

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

или

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

Ответ 2

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

или

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

Разница между этими двумя методами см. в Char.IsDigit и Char.IsNumber.

Ответ 3

Что-то вроде этого может быть?

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));

Ответ 4

    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.

Но я не уверен, правильно ли понял, какое количество чисел означает. Это число чисел (другие ответы) или число, которое формирует число (этот ответ).