2009-08-26 7 views
2

J'ai besoin d'extraire le code postal d'une chaîne de caractères. La chaîne ressemble à ceci:Besoin d'aide avec Regex pour extraire le code postal de la chaîne

Sandviksveien 184, 1300 Sandvika 

Comment puis-je utiliser regex pour extraire le code postal? Dans la chaîne au-dessus du code serait 1300.

J'ai essayé quelque chose le long de la route comme ceci:

Regex pattern = new Regex(", [0..9]{4} "); 
string str = "Sandviksveien 184, 1300 Sandvika"; 
string[] substring = pattern.Split(str); 
lblMigrate.Text = substring[1].ToString(); 

Mais ce ne fonctionne pas.

Répondre

6

Cela devrait faire l'affaire:

,\s(\d{4})

Et voici un bref exemple de la façon de l'utiliser:

using System; 
using System.Text.RegularExpressions; 

class Test 
{ 
    static void Main() 
    { 
     String input = "Sandviksveien 184, 1300 Sandvika"; 

     Regex regex = new Regex(@",\s(\d{4})", 
      RegexOptions.Compiled | 
      RegexOptions.CultureInvariant); 

     Match match = regex.Match(input); 

     if (match.Success) 
      Console.WriteLine(match.Groups[1].Value); 
    } 
} 
+0

Ooh, il semble que cela fonctionne :) Vous avez besoin d'autres tests d'abord:) – Steven

2

Je pense que vous êtes à la recherche Groupement que vous pouvez faire avec Regexes ...

Pour un exemple ...

Regex.Match(input, ", (?<zipcode>[0..9]{4}) ").Groups["zipcode"].Value; 

Vous devrez peut-être modifier un peu ce que je « m va hors de la mémoire ...

1

Essayez ceci:

var strs = new List<string> { 
"ffsf 324, 3480 hello", 
"abcd 123, 1234 hello", 
"abcd 124, 1235 hello", 
"abcd 125, 1235 hello" 
}; 

Regex r = new Regex(@",\s\d{4}"); 

foreach (var item in strs) 
{ 
    var m = r.Match(item); 
    if (m.Success) 
    { 
     Console.WriteLine("Found: {0} in string {1}", m.Value.Substring(2), item); 
    } 
} 
Questions connexes