У меня есть пользователь, который вводит строку в текстовом редакторе форм 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;
}
}
}
}