Количество жирных слов в текстовом редакторе Windows - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть пользователь, который вводит строку в текстовом редакторе форм Windows, текст сохраняется в виде HTML, а жирные слова заключаются в теги <STRONG>abc </STRONG>.Каждое слово подсчитывается и отображается, но жирные слова учитываются дважды.Как рассчитать общее количество жирных слов.В настоящее время я извлекаю слова и сравниваю их с исходной строкой, но этот метод не работает.

//test is a keyvalue pair that contains count of each word
MatchCollection matches = Regex.Matches(source, @"<STRONG.*?>(.*?)<\/STRONG>");
            List<string> results=new List<String>();
            if (matches.Count > 0)
                foreach (Match m in matches)
                    results.Add(m.Groups[1].ToString());

            int boldword = 0;

            List<string> finalist = new List<String>();
            foreach (string aa in results)
            {
                string abc = aa;
                string[] words = abc.Split(' ');
                for (int w = 0; w < words.Length; w++)
                {
                    if (!IsValid(words[w]) && !IsUrlValid(words[w]) && !IsDecimal(words[w]))
                        words[w] = words[w].Replace('.', ' ');
                    words = words.Where(x => !string.IsNullOrEmpty(x)).ToArray();
                }
                    string nword = string.Join(" ", words);
                    nword = nword.TrimEnd();
                    string[] nwrdarr = nword.Split(' ');
                    finalist.AddRange(nwrdarr);
            }
            for (int ab = 0; ab < finalist.Count; ab++)
            {
                if (finalist[ab] != "")
                {
                    string n = test.ElementAt(ab).Key.ToString();
                    List<String> testn = new List<String>();
                    if (!IsValid(n) && !IsUrlValid(n) && !IsDecimal(n))
                    {
                        testn = n.Split('.').ToList();
                    }
                    if (testn.Count > 0)
                    {
                        var sbc = new StringBuilder();
                        foreach (char c in testn[0])
                        {
                            if (!char.IsPunctuation(c))
                                sbc.Append(c);
                        }
                        testn[0] = sbc.ToString();
                        var sb = new StringBuilder();
                        foreach (char c in finalist[ab])
                        {
                            if (!char.IsPunctuation(c))
                                sb.Append(c);
                        }
                        finalist[ab] = sb.ToString();
                        if (testn[0] == finalist[ab])
                        {
                            boldword = boldword + test[ab].Value;
                            int val = test[ab].Value * 2;
                            var newEntry = new KeyValuePair<string, int>(finalist[ab], val);
                            test[ab] = newEntry;
                        }
                    }
                    else
                    {
                        if (n == finalist[ab])
                        {
                            boldword = boldword + test[ab].Value;
                            int val = test[ab].Value * 2;
                            var newEntry = new KeyValuePair<string, int>(finalist[ab], val);
                            test[ab] = newEntry;
                        }
                    }
                }
            }
...