私は正常に動作することがわかっている機能をいくつか持っています。正規表現を使ってテキストボックス内の単語数を数えるだけで、もう1人は正規表現を使って同じテキストボックス内の特定の単語(文字列)のインスタンスを数えます。私はこれらの両方が期待値を返すことを確認しました。DataGridの問題 - 値は常に0を表示しますか?
しかし、私は明らかに、何かの理由で、キーワードカウントが常にゼロとして返されるので、私のデータグリッドに何らかの形でデータを取り込むという機能を台無しにしています。
は、ここに私のコードです:
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」を使用していませんでした。明らかに、キャリッジリターンを含めてそれを提出することは、単に全体を1つの大規模な塊に「分割する」ことでした。私はそれを "\ r"に変更し、少なくとも "Included"と "Occurences"の部分はうまく動作します。
ここで唯一の問題は、「濃度」が機能していないことです。私はintとして宣言することはできませんが実現します。しかし、それはまだ0を返す - 私が密度をfloatまたはvarとして宣言しても。
何か問題がありますか?
thedensity = keywordcount/wordcount;
また、.ToString()関数は、小数点に加えてそれより前のすべてを切り捨てますか?例えば、変数の値が0.43の場合、それは単に0に変換されますか?そうでない場合は、どのような変数タイプを使用する必要がありますか?私はフロートが適切だと思うだろう。
もう一度おねがいします!
EDIT @ 8:45 MST:多すぎる回答を受け入れることはできません。 '\ r'とvarの両方のタイプが問題でした。 2つの整数を分割して浮動小数点数を計算することができないことに気づいていませんでした。ソース変数を浮動小数点数に変更しただけでなく、密度変数を変更したときも同様に動作しました。
二重の感謝!
-ootah
DataGridの項目としてバインドされているデータ型がKeywordDensityであると仮定します。 KeywordCountが正しく動作していることを保証しているので、KeywordDensityのコードとDataGridのXamlのどちらも表示していないというのは残念です。 – AnthonyWJones