2011-08-25 4 views
-1

Je dois avoir la possibilité d'analyser une suite de nombres dans une chaîne en C#/Regex. Les chiffres peuvent être un ou plusieurs chiffres et sont toujours à la fin de la chaîne et après le mot « ID », par exemple:Trouver des nombres dans une chaîne en utilisant C#/Regex

« Test 123 Test - ID 589 »

Dans ce cas, je dois être en mesure de choisir 589.

Des suggestions? Une partie du code que j'ai utilisé sélectionne tous les chiffres ce qui n'est pas ce que je veux faire.

Merci

+1

Pouvez-vous poster ce que vous avez essayé? –

+0

Recherche de rendements [this] (http://stackoverflow.com/questions/6616969/finding-all-numbers-in-a-string) – afuzzyllama

+0

si vous savez que le numéro que vous voulez choisir sera toujours à la fin de la chaîne, je ne vous suggérerai pas d'utiliser les expressions régulières ici. – Asdfg

Répondre

1
string resultString = null; 
try { 
    Regex regexObj = new Regex(@"ID (?<digit>\d+)$"); 
    resultString = regexObj.Match(subjectString).Groups["digit"].Value; 
} catch (ArgumentException ex) { 
// Syntax error in the regular expression 
} 
3

j'utiliser le modèle @ « ID (\ d +) $ »

using System.Text.RegularExpressions; 
var s = "Test 123 Test - ID 589"; 
var match = Regex.Match(s, @"ID (\d+)$"); 
int? id = null; 
if (match.Success) { 
    id = int.Parse(match.Groups[1].Value);  
} 
+0

Merci James cela a bien fonctionné. –

0

C'est le modèle le plus spécifique, dans le cas où pas chaque ligne se termine par un numéro qui vous intéresse dans:

@"\bID\s+(\d+)$" 

Remarque: Les numéros cibles seront dans le groupe de capture 1.

Cependant, sur la base votre description, vous pouvez simplement utiliser ceci:

@"\d+$" 

Il semble simplement une chaîne de chiffres numériques à la fin de chaque ligne. C'est ce que j'irais avec.

1

foo.Substring (foo.IndexOf ("ID") + 3)

Questions connexes