2017-06-13 105 views
1

我想从用户提供的搜索字符串中分离出澳大利亚邮政编码。从c中的字符串拆分出字符串#

澳大利亚邮政编码为4位数字,格式为'0000' - '9999'

用户应该能够键入"Searchterm 2000 3000"和琴弦20003000应该被分离成一个单独的变量,以便在后端我可以筛选针对所述搜索项对应的邮政编码。

我可以在正则表达式匹配做一个foreach:

foreach (var match in Regex.Matches(str, @"<not sure what the regex entry is>")) 

但后来我怎么删除字符串这些比赛使我留下了搜索词? (可多个单词

+0

问题是过于宽泛?看起来很特别。 –

回答

6

我建议使用正则表达式(提取4位数字)和的LINQ(组织他们):

string source = "Searchterm 2000 3000"; 

// "2000 - 3000" 
string result = string.Join(" - ", Regex 
    .Matches(source, "[0-9]{4}") 
    .OfType<Match>() 
    .Select(match => match.Value) 
    .Take(2)); 

如果你想邮政编码的零件是分离的,只是下降string.Join

// parts[0] == 2000; parts[1] == 3000 
string[] parts = Regex 
    .Matches(source, "[0-9]{4}") 
    .OfType<Match>() 
    .Select(match => match.Value) 
    .Take(2) 
    .ToArray(); 
+0

第二个选项是完美的,那么我如何从原始搜索词中删除这些邮编? –

0

你可以使用string.Split获得字符串数组,例如

"Searchterm 2000 3000".Split(' '); 

将返回以下阵列:“搜索关键词”,“2000”,“3000”]