Как я могу посчитать числа в строке смешанного текста / чисел - PullRequest
16 голосов
/ 13 мая 2011

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

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

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

Ответы [ 4 ]

33 голосов
/ 13 мая 2011

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

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

или

var count = jobId.Count(Char.IsDigit);
4 голосов
/ 13 мая 2011
int x = "xxx123432".Count(c => Char.IsNumber(c)); // 6

или

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

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

2 голосов
/ 13 мая 2011

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

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));
0 голосов
/ 13 мая 2011
    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"потому что в B2B он будет считать 2.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...