2016-09-30 215 views
-1

我敢肯定,這已經做過,但什麼我真的想要做的是有一個認定的字符連續兩場比賽爲一個字符串的方法,一組多個內的連續字符的數量字符串,任何匹配少於1個字符匹配,不計算。 (至少2)。比較字符串和字符串列表中查找匹配

如果與測試的字符串是 「XX聲音5」,下面將結果

  1. 聲音XXX-XXX-5051 NJ -----結果:10(匹配 '聲音' 和'XX')
  2. YY聲音-----結果:8(聲音)
  3. 聲音5的xy -----結果:9(空格數,所以匹配是Audible 5)
  4. Audible.com 5 -----結果:7
+1

我不明白爲什麼它是第一個案件的9。在字符串「xx Audible 5」中,我們有「xx」首先是「Audible」。你如何在你的問題中定義匹配? – xuanluong

+0

按照你的規則(空格數),第一個例子的結果應該是10.也就是「Audible xx」。這是10個字符。另外,如果空格計數,那麼#2的結果應該是8.無論是那個還是你需要改進你的規則。例如,如果字符串是「Audible」(即8個空格,單詞「Audible」),結果是15還是7?如果是「xx Audible」會怎麼樣? –

+0

@jim我已更新它。感謝您的支持。所以它總是匹配的數量(超過1)加在一起 – user1112324

回答

1

試試這個。這不是最佳的,但它工作得很好

static int FindMatch(string text, string pattern) 
    { 
     var total = 0;   
     for (int i = 0; i < pattern.Length; i++) 
     { 
      var max = 0;    
      for (int j = 2; j <= pattern.Length - i; j++) 
      { 
       var temp = pattern.Substring(i, j); 
       if (text.Contains(temp))     
        if (max < temp.Length)       
         max = temp.Length; 
      } 
      total += max; 
      if (max > 0) 
       i += max-1; 
     } 
     return total; 
    } 
  • FindMatch("Audible xxx-xxx-5051 NJ", "xx Audible 5");收益10

  • FindMatch("yy Audible", "xx Audible 5");返回8

  • FindMatch("Audible 5 xy", "xx Audible 5");回到9
  • FindMatch("Audible.com 5", "xx Audible 5");回報9太多,而不是7,因爲正如我在這個例子中可以理解爲空間5「5」
+0

非常感謝你... – user1112324

+0

如果我可以幫助你,請將答案標記爲正確 –