2016-04-05 94 views
0

Dosyası CSV Kullanıcı Girişi Metin karşılaştırın ve kullanıcı girişi olmak örneğin kelimelerin bir CSV dosyası vardır: "Vay serin LOL var" ve CSV dosyası:C# bir metin kutusundan kullanıcı girişi varsa C#

LOL dosyasında herhangi eşleşmeleri bulmak için ben karşılaştırmak istiyorsunuz nasıl

giriş metin Laughing Gürültülü

ROFL Rolling On Floor Laughing Out? Dosyayı nasıl yüklerim?

+0

Csv dosyasında alanlar nasıl ayrılıyor? –

cevap

0

Sen yapabilirsiniz: O yapıyor

string input = "Wow that's cool LOL"; 
string[] splitArray = input.Split(); 
bool ifFound = File.ReadLines("yourCVSFilePath.csv") 
       .Any(line => splitArray.Any(line.Contains)); 

:

  • Böl giriş kelimelerin bir diziye ayrı ayrı karşılaştırılacak.
  • Dosya satırını satır olarak yükler (tembel yükleme)
  • Bölünmüş dizideki herhangi bir sözcüğün satırdaki herhangi bir sözcükle eşleşip eşleşmediğini görmek için karşılaştırın.

Davayı görmezden dize karşılaştırma yapmak istiyorsanız o zaman yapabilirsiniz:

bool ifFound = File.ReadLines("yourCVSFilePath.csv") 
       .Any(line => 
         splitArray.Any(sa => 
            line.IndexOf(sa, StringComparison.CurrentCultureIgnoreCase) > -1)); 
+0

Bir csv normalde birden fazla alan içerir, sadece alanlara karşı kontrol etmek yerine 'line.Contains' ile bir alt dizin araması kullanırsınız. Yani 'lolipop' değeri de 'LOL' ile eşleşir. –

+0

Tim, bu bir metin dosyası gibi görünüyor, daha sonra bir CSV, birden fazla alan olmasına rağmen, * (büyük olasılıkla virgülle ayrılmış) *, ama sorudan bakıldığında OP her alandaki karşılaştırmayı yapacak gibi görünüyor ve sadece belirli bir alan değil. – Habib

+0

Elbette, ama OP'nin tüm alanları kontrol etmek istediği anlaşılıyor ama sanırım bunun tam bir eşleşme değil, kısmi olması gerektiğini düşünüyorum. Örnek lolipop'a bak. –

0

csv dosyasından satırları okumak için File.ReadLines kullanabilir ve LINQ bunları filtrelemek için:

string input = "Wow that's cool LOL"; 
string[] words = input.Split(); 

char delimiter = '\t'; // for example 
IEnumerable<string> matchingLines = File.ReadLines("yourCVSFilePath.csv") 
    .Where(line => words.Intersect(line.Split(delimiter)).Any()) 
    .ToList(()); 

:

Intersect ... Any yaklaşım bu alternatif sorgunun optimize edilmiş bir sürümüdür