Проверка количества совпадений слов в случайных буквах

У меня есть строка из 500 случайных букв и словарь из 10 000 список слов.

Я хочу проверить буквы на совпадения слов.

Если есть 5 совпадений или больше, я хочу, чтобы он возвращал список совпавших слов.

Однако эти foreach и Contains.(), похоже, работают неправильно или возвращают правильные совпадения. Он также возвращает частичные совпадения и отдельные буквы.


// 500 Random Letters
string letters = "bliduuwfhbgphwhsyzjnlfyizbjfeeepsbpgplpbhaegyepqcjhhotovnzdtlracxrwggbcmjiglasjvmscvxwazmutqiwppzcjhijjbguxfnduuphhsoffaqwtmhmensqmyicnciaoczumjzyaaowbtwjqlpxuuqknxqvmnueknqcbvkkmildyvosczlbnlgumohosemnfkmndtiubfkminlriytmbtrzhwqmovrivxxojbpirqahatmydqgulammsnfgcvgfncqkpxhgikulsjynjrjypxwvlkvwvigvjvuydbjfizmbfbtjprxkmiqpfuyebllzezbxozkiidpplvqkqlgdlvjbfeticedwomxgawuphocisaejeonqehoipzsjgbfdatbzykkurrwwtajeajeornrhyoqadljfjyizzfluetynlrpoqojxxqmmbuaktjqghqmusjfvxkkyoewgyckpbmismwyfebaucsfueuwgio"

// Dictionary Words List
string[] words = File.ReadAllText(@"C:\dictionarywords.txt").Split('\n');

// Word Matches List
List<string> matches = new List<string>();


// Check for Word matches in Letters
foreach (var x in words)
{
    // Add to list if match
    if (letters.Contains(x))
    {
        matches.Add(x);
    }
}

// Return Matched Words if 5 or greater
if (matches.Count() >= 5)
{
    textBox.Text = string.Join("\n", matches);
}

Примеры

Совпадения слов, найденные на глаз:

  • крышка
  • горячий
  • камедь
  • шланг
  • шляпа

Возвращает совпадение кода:

  • my
  • up
  • so
  • c
  • et
  • ms
  • am
  • me
  • s
  • x
  • n
  • b
  • ...

person Matt McManis    schedule 05.12.2017    source источник
comment
Что происходит в отладчике, когда он возвращает одну букву или тарабарщину?   -  person Jack    schedule 05.12.2017
comment
Эти совпадения действительно есть в вашей строке. Не видя вашего словаря, я бы предположил, что они тоже есть в вашем словаре. Все эти совпадения являются правильными английскими словами, буквами или другими ожидаемыми элементами словаря.   -  person oerkelens    schedule 05.12.2017
comment
@oerkelens Думаю, вы правы raw. githubusercontent.com/first20hours/google-10000-english/   -  person Matt McManis    schedule 05.12.2017
comment
Итак, ваш код работает так, как задумано?   -  person oerkelens    schedule 05.12.2017
comment
@oerkelens Я ищу лучший список словарей, дам вам знать.   -  person Matt McManis    schedule 05.12.2017


Ответы (1)


Ваш код работает по назначению. Это поиск этих слов, но он также находит дополнительные слова. Я бы предложил убрать слова, которые вы не хотите показывать в поиске. Например, многие люди используют это в фильтре ненормативной лексики. Поэтому, если предложение содержит ругательство, оно пропускается, потому что оно найдено в словаре ругательств. Попробуйте использовать гораздо меньший список слов, которые вы вставили сами, и проверьте результаты. Попробуйте заменить эти слова другими словами?

person Horkrine    schedule 05.12.2017