C# 找到匹配的单词

C# 找到匹配的单词,c#,regex,string,match,C#,Regex,String,Match,我有一段代码,在其中搜索字符串以从数组中查找单词: string wordlist = synonymslistbox.Items[q_index].ToString().Split(':')[0].Replace(',', ' '); var pattern = new Regex(@"\W"); var qa = pattern.Split(first_sentence).Any(w => wordlist.Contains(w)); 现在我想实现两件我不知道该怎么做的事情 找出

我有一段代码,在其中搜索字符串以从数组中查找单词:

string wordlist = synonymslistbox.Items[q_index].ToString().Split(':')[0].Replace(',', ' ');

var pattern = new Regex(@"\W");

var qa = pattern.Split(first_sentence).Any(w => wordlist.Contains(w));
现在我想实现两件我不知道该怎么做的事情

  • 找出匹配的单词。如果找到,此代码只返回
    true
  • 如果第一个句子是
    我喜欢我的班卓琴
    ,那么在
    班卓琴
    中,字母
    a
    就不应该像单词
    a
    那样。当它出现在这样一句话中时,它应该只把
    a
    读作一个单词:
    我喜欢在下午结束时喝一大杯
  • 找出巫婆的话是匹配的。如果找到这个,它将返回true
  • 在以下位置使用,而不是任何:

    var qa = pattern.Split(first_sentence).Where(w => wordlist.Contains(w));
    
  • 当第一个句子是“我喜欢我的班卓琴”时,它不应该在班卓琴中找到a作为单词a。在以下情况下,它应仅将a作为单个单词阅读: 下面的一句话是这样的:“我喜欢在周末喝一大杯啤酒。” “下午”

  • 您的单词列表不应该是字符串,而应该是字符串的列表或数组。确保列表中有“a”。除此之外,您的代码将工作

    它现在找到单词,但如果是两个单词,它只返回单词的第一个停顿。如果我的单词列表中有“newcar”,那么它只返回new,而不是精确匹配的整个字符串is@GlennBoserupMøller它与正则表达式的关系比任何东西都要大-您的单词用“\W”分隔,因此您应该解决这个问题-您可以使用不同的正则表达式,使用其他字符而不是空格分隔,等等,只是一些想法。