Studyzy.LearnEnglishBySubtitle.SentenceParse.Pickup C# (CSharp) Method

Pickup() public method

找出一个句子中的所有生词(Key为生词的原型,Value为生词在句子中的形式)
public Pickup ( string line ) : string>>.IList
line string 一句英文句子
return string>>.IList
        public IList<KeyValuePair<string, string>> Pickup(string line)
        {
            if (knownVocabulary == null)
            {
                knownVocabulary =
                    DbOperator.Instance.FindAllUserVocabulary(v => v.KnownStatus == KnownStatus.Known)
                        .Select(v => v.Word)
                        .ToList();
                ignores = DbOperator.Instance.GetAllIgnoreWords().Select(v => v.Word).ToList();
            }
            var orgLine = GetOriginalSentence(line);
            var sentences = GetSentences(orgLine);
            var array = SplitSentence2Words(orgLine);
            var result = new List<KeyValuePair<string, string>>();
            foreach (string w in array)
            {
                var wordLow = w.ToLower();
                if (IsEasyWord(wordLow))//简单词汇,忽略
                {
                    continue;
                }
                if (IsEnglishName(w))
                {
                    //英文名,忽略
                    continue;
                }
                if (IsSpecialName(w, sentences))
                {
                    if (!SpecialWords.Contains(w))
                    {
                        SpecialWords.Add(w);
                    }
                    continue;
                }
                if(w[0]>='A'&&w[0]<='Z')//首字母大写的情况下,判断这个单词是不是特殊词汇,如果是,则保持首字母大写
                {
                    if (Global.DictionaryService.IsInDictionary(w))
                    {
                        if (knownVocabulary.Contains(w) || ignores.Contains(w))
                        {
                            //认识的单词,忽略
                            continue;
                        }
                        result.Add(new KeyValuePair<string, string>(w, w));
                        continue;
                    }
                }
                var original = englishWordService.GetOriginalWord(wordLow);
               //改成小写后,判断小写单词和其原型是否认识
                if (knownVocabulary.Contains(wordLow) || knownVocabulary.Contains(original) || ignores.Contains(wordLow) ||
                    ignores.Contains(original))
                {
                    //认识的单词,忽略
                    continue;
                }
                if (original != wordLow)
                {
                    var wordMean = Global.DictionaryService.GetChineseMeanInDict(wordLow);
                    if (wordMean != null)
                    {
                      var originalMean=  Global.DictionaryService.GetChineseMeanInDict(original);
                        if (!wordMean.Detail.Contains( originalMean.Detail))
                        {
                            //找到的原型不对
                            original = wordLow;
                        }
                    }
                }
                result.Add(new KeyValuePair<string, string>(original,w));

            }
            return result;
        }