Beispiel #1
0
        public Concordance CreateConrcondance(string path, int N) // int N - count of string in one page
        {
            #region Source
            Concordance  concordance = new Concordance(_alphabet);
            StreamReader text        = new StreamReader(path);

            string pattern = string.Format("\\b[{0}]+\\b", _alphabet);
            Regex  regex   = new Regex(pattern, RegexOptions.IgnoreCase);

            StringBuilder currentPage         = new StringBuilder();
            string        currentString       = text.ReadLine();
            int           currentStringNumber = 0;
            int           currentPageNumber   = 1;
            #endregion
            while (currentString != null)
            {
                currentStringNumber += 1;
                currentPage.Append(currentString + " ");
                if (currentStringNumber == N)
                {
                    CreateConcordanceItems(regex, currentPage.ToString(), concordance, currentPageNumber);
                    currentPageNumber  += 1;
                    currentStringNumber = 0;
                    currentPage.Clear();
                }
                currentString = text.ReadLine();
                if (currentString == null)
                {
                    CreateConcordanceItems(regex, currentPage.ToString(), concordance, currentPageNumber);
                }
            }
            text.Close();
            return(concordance);
        }
Beispiel #2
0
        private void CreateConcordanceItems(
            Regex regex, string currentPage, Concordance concordance, int currentPageNumber)
        {
            MatchCollection wordsCollection = regex.Matches(currentPage.ToString());

            foreach (var word in wordsCollection)
            {
                string _word       = word.ToString().ToLower();
                char   firstLetter = char.ToUpper(_word[0]);

                SortedDictionary <string, IWordInfo> wordValue =
                    (SortedDictionary <string, IWordInfo>)concordance[firstLetter];
                if (wordValue.Keys.Contains(_word))
                {
                    wordValue[_word].CountUp();
                    wordValue[_word].AddPageNumber(currentPageNumber);
                }
                else
                {
                    IWordInfo newWord = new WordInfo(_word, currentPageNumber);
                    wordValue[newWord.Value] = newWord;
                }
            }
        }