У меня есть пара функций, которые, я знаю, работают правильно. Один просто подсчитывает количество слов в текстовом поле, используя регулярное выражение, а другой также использует регулярное выражение для подсчета экземпляров определенного слова (строки) в том же текстовом поле. Я убедился, что они оба возвращают ожидаемые значения.
Тем не менее, я явно напортачил с функцией, чтобы каким-то образом заполнить мою сетку данных, потому что количество ключевых слов всегда возвращается как ноль, как и плотность.
Вот мой код:
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;
}
EDIT @ 8:30 MST: проблема частично решена. Использование «\n» в качестве разделительного символа не работало. По-видимому, это было просто «разделение» всего на один массивный кусок, который включал возврат каретки и отправку этого. Я изменил его на «\ r», и теперь, по крайней мере, часть «Включено» и «Вхождения» работает нормально.
Теперь единственная проблема, с которой я сталкиваюсь, заключается в том, что «плотность» не работает. Я понимаю, что его нельзя объявить как int; но он по-прежнему всегда возвращает 0 - даже когда я объявляю плотность как число с плавающей запятой или переменную.
Что-то не так со следующим?
thedensity = keywordcount / wordcount;
Кроме того, функция .ToString() обрезает десятичную точку плюс все, что за ней? Например, если значение переменной равно 0,43, оно просто преобразуется в 0? Если это не так, какой тип переменной я должен использовать? Я думаю, что поплавок будет уместен.
Спасибо еще раз!
EDIT @ 8:45 MST: Жаль, что я не могу принять несколько ответов. Проблемы возникали как с типом '\r', так и с типом var. Я не знал, что вы не можете вычислить число с плавающей запятой, разделив два целых числа. Когда я изменил исходные переменные на числа с плавающей запятой, а также изменил плотность, это сработало.
Двойное спасибо!
-Сута
KeywordDensity
, ни Xaml для DataGrid. - person AnthonyWJones   schedule 14.01.2011