나는 제대로 작동하는 몇 가지 기능을 가지고 있습니다. 하나는 정규식을 사용하여 텍스트 상자의 단어 수를 계산하고 다른 하나는 정규식을 사용하여 동일한 텍스트 상자에서 특정 단어 (문자열)의 인스턴스를 계산합니다. 이 둘 모두 예상 값을 반환하는지 확인했습니다.DataGrid 문제 - 값은 항상 0을 표시합니까?
그러나 필자는 필자의 datagrid를 채우기 위해 함수를 사용하지 않는 것이 분명합니다. 왜냐하면 keywordcount는 항상 밀도와 마찬가지로 0으로 반환되기 때문입니다. 오전 MST이
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시 반 @ : 문제의 일부를 알아 낸
여기 내 코드입니다. 분할 문자로 "\ n"을 사용하면 작동하지 않습니다. 명백하게 그것은 캐리지 리턴을 포함하고 그것을 제출하는 하나의 방대한 덩어리로 모든 것을 단순히 "쪼개었다". 나는 그것을 "\ r"로 바꿨고 적어도 "Included"와 "Occurences"부분은 잘 작동합니다.
유일한 문제는 "밀도"가 작동하지 않는다는 것입니다. 나는 그것이 int로 선언 될 수 없다는 것을 깨닫는다; 하지만 그것은 여전히 0을 반환합니다 - 심지어 밀도를 float 또는 var로 선언하는 경우에도 마찬가지입니다.
다음과 같은 것이 있습니까?
thedensity = keywordcount/wordcount;
또한 .ToString() 함수는 소수점 이하의 모든 값을 잘라 버릴 수 있습니까? 예를 들어, 변수의 값이 0.43이면 0으로 변환됩니까? 그런 경우가 아니라면 어떤 변수 유형을 사용해야합니까? 나는 부유가 적절하다고 생각할 것이다.
다시 한번 감사드립니다!
EDIT @ 8:45 MST : 나도 여러 답변을 받아 들일 수 없습니다. '\ r'과 var 유형 모두 문제가되었습니다. 나는 두 개의 정수를 나눔으로써 플로트를 계산할 수 없다는 것을 깨닫지 못했습니다. 소스 변수를 float로 변경했을뿐만 아니라 밀도를 var로 변경했을 때도 효과가있었습니다.
두 번 고맙습니다!
-ootah
DataGrid에서 항목으로 바인딩되는 데이터 형식이 KeywordDensity라고 가정합니다. KeywordCount가 올바르게 작동한다는 것은 우리에게 확실하지 않습니다. KeywordCount가 KeywordDensity의 코드 나 DataGrid의 Xaml 중 하나를 표시하지 못했던 것입니다. – AnthonyWJones