2016-05-22 169 views
0

我正在循環一個數組,並再次循環這些值,以匹配它與字符串,如果整個給定的字符串匹配將數組的整個元素,他們我應該打印該字符串,但它不工作匹配一個字符串與數組

public class find 
{ 
string[] inputs = {"Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401","Hi there should"}; 
string store_tran1 = "1220 3rd St ,Santa Monica, CA 90401" 

foreach(var store in stores){ 

         List<string> outputs = new List<string>(); 
foreach (var input in inputs) 
         { 
          outputs.AddRange((new String(input.ToCharArray() 
           .Where(c => Char.IsLetterOrDigit(c) || c == ' ') 
           .ToArray()).Split(' '))); 
         } 
foreach (var output in outputs) 
          { 



           //string sto = store.ToString(); 
           //Console.Write (output+"\n"); 
           bool store_match_check_1 = Regex.IsMatch (store_tran1, @""+Regex.Escape (output)+"", RegexOptions.IgnoreCase); 
           if (store_match_check_1 == true) { 
            //string store_match_check1 = store_match_check_1.Groups [1].Value; 

            res = true; 

           } else { 
            store_array_check.Add ("one"); 
            res = false; 
           } 


          } 


} 
} 

預期輸出:

Third Street Promenade, 1220 3rd St ,Santa Monica, CA 9040 

我怎麼能得到這個沃金

+2

爲什麼在使用正則表達式時只能使用字符串Contains()方法? – jdweng

+3

請修復您的縮進以使我們更輕鬆。 :) – nicomp

回答

0

爲什麼不

var inputs = new[] { "Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401", "Hi there should" }; 
var store_tran1 = "1220 3rd St ,Santa Monica, CA 90401"; 
foreach (var input in inputs) 
{ 
    if (input.Contains(store_tran1)) 
    { 
     Console.WriteLine(input); 
    } 
} 

(如果你需要,你可以隨時通過調用ToLower()或致電Trim()刪除空格忽略大小寫)

0

你的正則表達式從輸入字符串刪除逗號,所以你不會得到任何比賽。

如果你真的要刪除所有非字母數字字符+逗號,你可以使用LINQ像這樣:

var inputs = new[] {"Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401","Hi there should"}; 
var store_tran1 = "1220 3rd St ,Santa Monica, CA 90401"; 
inputs.Select(s => Regex.Replace(s, @"^\s*|[^\w\s,]+|\s*$", "")) 
     .Where(s => s.Contains(store_tran1)) 
     .ToList() 
     .ForEach(Console.WriteLine); 

正則表達式也將受益於輸入字符串的開頭和結尾修剪空白。

C# demo

+0

你不應該使用'.ForEach()'https://blogs.msdn.microsoft.com/ericlippert/2009/05/18/foreach-vs-foreach/ – aloisdg

+0

@aloisdg我做了它留在LINQ思想作爲一個簡單的一行。我同意將它包裝在一個foreach塊中會更好,也更有效率。 –

相關問題