یک رشته رو در نظر بگیرید . میخوام کلماتی که بیشترین تکرار رو در رشته دارند ، بدست بیارم مثلا" به یک کامبوباکس اضافه کنم . در واقع با این روش میخوام کلمات کلیدی هر متن رو بدست بیارم .
مثل کلمات کلیدی که در سایت ها استفاده میشن .
یک رشته رو در نظر بگیرید . میخوام کلماتی که بیشترین تکرار رو در رشته دارند ، بدست بیارم مثلا" به یک کامبوباکس اضافه کنم . در واقع با این روش میخوام کلمات کلیدی هر متن رو بدست بیارم .
مثل کلمات کلیدی که در سایت ها استفاده میشن .
سلام دوست عزیز .
string words = "Hello World This is a great world, This World is simply great".ToLower();
var results = words.Split(' ').Where(x => x.Length > 3)
.GroupBy(x => x)
.Select(x => new { Count = x.Count(), Word = x.Key })
.OrderByDescending(x => x.Count);
foreach (var item in results)
{
MessageBox.Show(item.Word + " - " + item.Count.ToString());
}
رفرنس : http://stackoverflow.com/questions/8...string-c-sharp
خوب متن باید به طور کامل اسکن بشه.
با توجه به اینکه جدا سازی کلمات با اسپیس نقطه ویرگول و... صورت میگیره و همینطور فرض اینکه متن استاندارد هست :
کافیه یه دیکشنری تعریف کرده و کلمه به کلمه کاوش کنید بعد اگر کلمه در دیکشنری نبود اظافه میشه و تعداد یک رو میگیره و اگر بود به تعدادش یکی اظافه میشه.
مطمئنا بحث شده جستجو کنید اگر به مشکلی برخورد کردید مطرح کنید.
سلام
دوستمون aminmousavi جوابشون خیلی خوبه. فقط من یه پیشنهاد کوچیک دارم که کاملش میکنه.
بجای ( ' ' )split بهتره حالتهای نقطهگذاری کاملتر بررسی بشه.
Split( " ,.:\t\'\"".ToCharArray() )
صباصبوحی