2017-01-02 35 views
0

可以說我有串這樣Test%Test,我已經存儲的字符串是這樣的:與任何可能的字符串替換字符c#

Test123Test TestTTTTest Test153jhdsTest 123Test TEST123

所以我想要的是,當我在文本框Test鍵入它會過濾我所有與Test在本身,這將讓我所有的字符串,這很容易,但我想輸入Test%Test,它需要篩選我自己Test[anything]Test本身(所以結果將是第一,第二和第三字符串)的一切。我該怎麼做?

+1

http://stackoverflow.com/questions/5417070/c-sharp-version-of-sql-like鏈接可以幫助您。 – mfatih

+1

它可能是一個很好的正則表達式。但我絕不是正則表達式專家。所以我會用String.StartsWith和String.EndsWith解決它。因此,將'seo'這個術語放在'%'上並且使用兩個值 – ErazerBrecht

+0

這裏'%'字符的作用是什麼?它是某種通配符嗎?分隔符?或者它是一個字面的「%」? – heltonbiker

回答

3

使用一個正則表達式的簡單的解決方案是:

string[] values = new string[] { "Test123Test", 
      "TestTTTTest", 
      "Test153jhdsTest", 
      "123Test", 
      "TEST123" }; 

string searchQuery = "Test%Test"; 

string regex = Regex.Escape(searchQuery).Replace("%", ".*?"); 

string[] filteredValues = values.Where(str => Regex.IsMatch(str, regex)).ToArray(); 

或單個匹配:

string value = "Test123Test"; 

string searchQuery = "Test%Test"; 

string regex = Regex.Escape(searchQuery).Replace("%", ".*?"); 

if (Regex.IsMatch(value, regex)) 
{ 
    // do something with the match...     
} 

我們使用正則表達式替換%(=任何字符,* =零個或多個次,?=懶惰量詞)。您可以瞭解更多有關正則表達式的信息here