У меня есть пара функций, которые, как я знаю, работают правильно.Один просто подсчитывает количество слов в текстовом поле с помощью регулярного выражения, а другой также использует регулярное выражение для подсчета экземпляров определенного слова (строки) в том же текстовом поле.Я убедился, что они оба возвращают ожидаемые значения.
Тем не менее, я явно испорчу функцию, чтобы как-то заполнить мою сетку данных, потому что ключевое слово всегда возвращает ноль, как и плотность.
Вот мой код:
public List<KeywordDensity> LoadCollectionData()
{
string thearticle = txtArticle.Text;
string[] keywordsarray = txtKeywords.Text.Split('\n');
bool isincluded = false;
int keywordcount = 0;
int thedensity = 0;
List<KeywordDensity> lsikeywords = new List<KeywordDensity>();
foreach (string s in keywordsarray)
{
if (s.Trim() != "")
{
keywordcount = KeywordCount(thearticle, s);
thedensity = keywordcount / WordCount(thearticle);
if (thearticle.Contains(s))
{
isincluded = true;
}
else
{
isincluded = false;
}
lsikeywords.Add(new KeywordDensity()
{
included = isincluded,
keyword = s,
occurences = keywordcount.ToString(),
density = thedensity.ToString()
});
}
}
return lsikeywords;
}
РЕДАКТИРОВАТЬ @ 8:30 MST : выяснил часть проблемы.Использование "\ n" в качестве символа разделения не работало.Очевидно, это было просто «разделение» всего этого на один массивный кусок, который включал возврат каретки и отправлял это.Я изменил его на "\ r", и теперь, по крайней мере, части "Включено" и "Вхождения" работают нормально.
Теперь единственная проблема, с которой я столкнулся, это то, что "плотность" не работает.Я понимаю, что это не может быть объявлено как int;но он все равно всегда возвращает 0 - даже когда я объявляю плотность как float или var.
Есть ли что-то не так со следующим?
thedensity = keywordcount / wordcount;
Также - выполняет функцию .ToString ()усечь десятичную точку плюс все, что за ней?Например, если значение переменной равно 0,43, оно будет просто преобразовано в 0?Если это не так, какой тип переменной я должен использовать?Я думаю, что поплавок будет уместным.
Еще раз спасибо!
EDIT @ 8:45 MST : Жаль, что я не могу принять несколько ответов.Типы '\ r' и var были проблемными.Я не понял, что вы не можете вычислить число с плавающей точкой, разделив два целых числа.Когда я изменил исходные переменные на числа с плавающей запятой, а также на то, что плотность изменялась, это работало.
Двойное спасибо!
-Sootah