2016-11-03 4 views
0

, например, мы имеем эту строку gf_T2fg57342523K_4212Определение последовательности чисел строки

я хочу, чтобы спасти 8 порядковые номера, так что будет 57342523

другой пример rt23A98457628Tr5462 будет 98457628

что является лучшим зачем это делать?

+2

Пожалуйста, покажите, что вы пробовали, чтобы достичь этого ... –

+0

Я думаю, что нужно сделать для каждого из всех символов в строке распознавания числа и подсчета чисел – avnic

+0

Регулярное выражение будет делать это. '\ d {8}' – beercodebeer

ответ

5

Вы можете использовать регулярные выражения, 8 цифр:

var input = "gf_T2fg57342523K_4212"; 
var match = Regex.Match(input, @"\d{8}"); 

if (match.Success) 
{ 
    var number = match.Value; 
    //Do something 
} 
+1

Отличное спасибо! – avnic

+2

@avnic mark ответьте как правильно, если помогли вам. – mybirthname

0

Вы можете сделать это с помощью Regex.

Regex regex = new Regex(@"\d{8}"); 
Match match = regex.Match("gf_T2fg57342523K_4212"); 

string value = string.Empty; 
if(match.Success) // If it is not important to know if it found something you cam suppress this if. 
    value = match.Value; 
-1
var result = Regex.Matches(rt23A98457628Tr5462, @"\d{8}") 
        .Cast<Match>() 
        .Select(m => m.Value) 
        .ToList(); 
0

Предполагая, что вы хотите, чтобы соответствовать строки, которые не содержат только 8 последовательных цифр (и не более), вам потребуется более сложное регулярное выражение, чем те, которые предусмотрены в других ответах. Здесь я использовал отрицательный и назад 'отрицательный предпросмотр:

(?<!\d)\d{8}(?!\d) 

Примеры:

Regex.Match("gf_T2fg57342523K_4212", @"(?<!\d)\d{8}(?!\d)") 
> Success, Value = "57342523" 

Regex.Match("gf_T2fg111157342523K_4212", @"(?<!\d)\d{8}(?!\d)") 
> Failure 

См msdn подробности о lookaround группировки конструкций.