2016-11-03 6 views
0

zum Beispiel haben wir diese Zeichenfolge gf_T2fg57342523K_4212Ermittlung der Reihenfolge der Zahlenfolge

ich will 8 Sequenznummern retten, so dass es 57.342.523

ein weiteres Beispiel wird rt23A98457628Tr5462 98457628

sein wird, was die beste warum, es zu tun?

+2

Bitte zeigen Sie, was Sie versucht haben, um dies zu erreichen ... –

+0

Ich denke, für jeden Chars in der Zeichenfolge zu tun, erkennen Sie die Nummer und zählen Sie die Zahlen – avnic

+0

Regulärer Ausdruck würde es tun. '\ d {8}' – beercodebeer

Antwort

5

Sie können einen regulären Ausdruck entspricht 8 Ziffern verwenden:

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

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

Perfekt danke! – avnic

+2

@avnic Marke Antwort als richtig, wenn Ihnen geholfen hat. – mybirthname

0

Sie es Regex tun können.

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

Sie wollen Unter der Annahme, Strings übereinstimmen, die nur 8 aufeinander folgenden Ziffern (und nicht mehr) enthalten, müssen Sie einen komplexeren regulären Ausdruck als in anderen Antworten zur Verfügung gestellt. Hier habe ich eine negative Lookbehind und einen negativen Look-Ahead verwendet:

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

Beispiele:

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

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

Siehe msdn Einzelheiten über die Lookarounds Gruppierungskonstrukte.

Verwandte Themen