用随机字母检查单词匹配计数

时间:2017-12-05 16:54:39

标签: c# wpf

我有一串500个随机字母和一个10,000字典word list

我想检查单词匹配的字母。

如果有5个或更多匹配,我希望它返回匹配单词列表。

但是,此foreachContains.()似乎无法正常工作或返回正确的匹配项。它还返回部分匹配和单个字母。

// 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);
}

实施例

眼睛找到的单词匹配:

  • 盖子
  • hot
  • gum
  • 软管

代码匹配返回:

  • 所以
  • C
  • 毫秒
  • 上午
  • 取值
  • X
  • 名词
  • B'/ LI>
  • ...

1 个答案:

答案 0 :(得分:2)

您的代码按预期工作。它正在寻找这些词,但它也在寻找其他词。我建议您删除不想在搜索中显示的字词。例如,很多人在亵渎过滤器中使用它。因此,如果一个句子包含一个诅咒词,它会省略该词,因为它在诅咒词的词典中找到了它。尝试使用一个更小的列表,其中包含您自己输入的单词并测试结果。尝试将这些词改为其他词?