2010-08-02 3 views
0
string[] pullspec = File.ReadAllLines(@"C:\fixedlist.txt"); 
foreach (string ps in pullspec) 
{ 
    string pslower = ps.ToLower(); 
    string[] pslowersplit = pslower.Split('|'); 
    var keywords = File.ReadAllLines(@"C:\crawl\keywords.txt"); 
    if (pslower.Contains("|")) 
    { 
     if (pslower.Contains(keywords)) 
     { 
      File.AppendAllText(@"C:\" + keyword + ".txt", pslowersplit[1] + "|" + pslowersplit[0] + "\n"); 
     } 
    } 
} 

Это не компилируется из-за pslower.Contains(keywords), но я не пытаюсь сделать 100 Foreach петли.C# string.Contains с использованием переменной

Есть ли у кого-нибудь предложения?

ответ

2

Использование LINQ:

if (keywords.Any(k => pslower.Contains(k))) 
+0

так как я могу сделать File.AppendAllText (@ "C: \" + ключевое слово + ".txt", pslowersplit [1] + "|" + pslowersplit [0] + "\ n"); – 2010-08-02 23:32:32

+0

сделать выбранное ключевое слово именем текстового файла – 2010-08-02 23:37:40

+0

@Mike: Вы хотите создать файл только для первого совпадения или для всех совпадений? – kbrimington

2

У вас есть коллекция ключевых слов, и вы хотите, чтобы увидеть, если любой из них (или все?) Содержатся в данной строке. Я не вижу, как вы разрешаете это без использования цикла где-нибудь, либо явным, либо скрытым в некоторой функции или выражении linq.

0

Другое решение - создать строку [] из ключевых слов, а затем string[] parts = pslower.Split(yourStringArray, StringSplitOptions.None); - если какая-либо из ваших строк появится, то parts.Length> 1. Вам нелегко получить ваши ключевые слова таким образом, tho '.

Смежные вопросы