2011-12-03 14 views
5

Uygulamamda, arama sorgusuna dayanarak basit bir arama uygulamak istiyorum. Diyelim ki 2 paragraf veya makale içeren bir dizim var ve bu makalede girdiğim ilgili konu veya ilgili anahtar kelimeler için arama yapmak istiyorum.Basit bir String araması nasıl yapılır

//this is my search query 
string mySearchQuery = "how to play with matches"; 

//these are my articles 
string[] myarticles = new string[] {"article 1: this article will teach newbies how to start fire by playing with the awesome matches..", "article 2: this article doesn't contain anything"}; 

Nasıl Yukarıda verdiğim arama sorgusuna bağlı olarak ilk yazıyı alabilirsiniz: Örneğin

? Herhangi bir fikir?

cevap

6

Bu mysearchquery kelimelerin hepsi içerdiğini myarticles içinde herhangi bir dize döndürür: bu teknik (yani bu kadar kullanılırsa

var tokens = mySearchQuery.Split(' '); 
var matches = myarticles.Where(m => tokens.All(t => m.Contains(t))); 

foreach(var match in matches) 
{ 
    // do whatever you wish with them here 
} 
+0

muhtemelen bir harf duyarsız karşılaştırmak yapmak isteyeyim Maçlar maçları eşleşir). ;) –

+0

Bunun, hız açısından, regex kullanımıyla nasıl kıyaslandığını biliyor musunuz? – GameAlchemist

+0

Bunu string.ToLower() öğesini kullanarak daha da iyileştirebilirsiniz. O zaman kapitalizasyon hakkında endişelenmenize gerek yok. –

1

Dize araması için güzel bir çerçeve hazırlayabildiğinizden eminim, bu yüzden geniş bir konu ve birçok arama kuralı var.

Ancak bu basit örnek için, arama sorgusunu "" ile bölmeyi deneyin, her kelime için basit bir dize araması yapın, bulursanız, paragraf arama eşlemesine 1 nokta ekleyin, sonra paragrafı en noktaları ...

İlgili konular