PDA

View Full Version : برداشتن خلاصه مطلب از متن اصلی مطالب بصورت پویا



maktab
دوشنبه 30 بهمن 1391, 10:43 صبح
سلام
من یک باکس با اندازه ثابت دارم که یه حدی میشه داخل آن متن نمایش داد. مثلا خلاصه مطلب، حالا من نمیخوام مدیر سایت بیاد و یه خلاصه برای هر کدام از قسمت ها بنویسه (یکی از علت ها: ممکنه بیش از حد مجاز بنویسه و از متن از باکس بیرون بزنه و...) و میخوام با استفاده از کد نویسی خودم خلاصه ای از متن اصلی را بردارم و بعنوان خلاصه قرار بدم.
همان طور که دیدید بعضی سایت ها این کار را میکنند و مثلا اگر کل متن 70 خط باشه میاد و مقداری که در باکس جا میگیره را برداشته و آخر آن ... میذاره.
حالا من چطور میتونم متن را به اندازه ی باکسم برداشته و آخر آن ... قرار بدم؟

morteza_mokhtari
دوشنبه 30 بهمن 1391, 14:50 عصر
public static string GetSummaryOfText(string Val, int Len)
{
string st;
//string Value = Regex.Replace(Val, "\\<(/?[^\\>]+)\\>", string.Empty);
if (Val.Length > Len)
{
st = Val.Substring(0, Len);
st = st.Substring(0, st.LastIndexOf(' '));
return st + "[...]";
}
else
return Val + "[...]";

}



بر اساس تعداد کاراکتر

maktab
دوشنبه 30 بهمن 1391, 17:02 عصر
من هم میخواستم با استفاده از روش مشابه ای این کار را بکنم. اما واقعا این روش صحیح است؟ یعنی با استفاده از تعداد کارکترها این کار را بکنم. چون ممکنه اندازه هر کارکتر مختلف باشه.
در کل من میخوام مطمئن باشم که متن از باکس بیشتر نشه.

Alfred188
دوشنبه 30 بهمن 1391, 18:48 عصر
درود،
با این روش در صورتی که تو کد از تگ ها استفاده شده باشه فکر نمی کنم جواب بده، یه سری از تگ ها احتمالا نصفه می شن و ممکنه دیزاین کل رو به هم بریزن،
مگر اینکه از یه متن کاملا بدون تگ استفاده شده باشه

meisam3322
دوشنبه 30 بهمن 1391, 19:30 عصر
بهتره هنگام ثبت در بانک اطلاعاتی ، خلاصه متن رو از کاربر گرفته و در فیلد مجزایی ذخیره کنین.

masoud60
دوشنبه 30 بهمن 1391, 23:31 عصر
بهتره وقتی از دیتابیس select میکنین قسمتی از اون فیلد رو select کنید
select SUBSTRING(NewsBody,0, 100) from table1


-----------------------
http://www.kohan-co.net

maktab
سه شنبه 01 اسفند 1391, 01:44 صبح
بهتره هنگام ثبت در بانک اطلاعاتی ، خلاصه متن رو از کاربر گرفته و در فیلد مجزایی ذخیره کنین.

خب با این روش باز هم ممکنه دیزاین کار به هم بخوره (وقتی که باکس نمایشی برای همه خلاصه مطالب ثابت باشه)، فرض کن کاربر بیاد و خلاصه ای بیش از اندازه وارد کنه؛ آن وقت چی؟

با روش آخر که masoud60 گفت هم باز ممکنه دیزاین کار خراب بشه یکی از دلایش رو Alfred188 گفت.

مشکل اصلی سر اندازه ثابت بودن جای نمایش خلاصه است. نمیدونم با جاوا اسکریپت نمیشه حلش کرد؟ جوری که فقط متن داخل کادر مورد نظر قرار بگیره و بیشتر شد دیگه بقیش را نشان نده

masoud60
سه شنبه 01 اسفند 1391, 15:30 عصر
شما مکان نمایشتون همیشه ثابت هست. وقتی اطلاعات ثابتی رو از دیتابیس fetch میکنی چرا باید دیزاین بهم بخوره؟ تعداد کاراکتر به یک عدد ثابتی محدود میشه
هم روشی که من گفتم و هم روشی که دوستمون "morteza mokhtari"[/URL] نباید مشکلی داشته باشه.
تست کنید

-------------------------------
[URL]http://www.kohan-co.net (http://barnamenevis.org/member.php?277807-morteza_mokhtari)

zerocool151
سه شنبه 01 اسفند 1391, 15:42 عصر
تا هر جا که به 5 تا نقطه رسید از اونجا به بعد رو نشون نمیده و به جاش سه تا نقطه نشون میده
راه حل من دراوردیه :

private string MakeLable(string Key)
{
if (Key.Contains("....."))
{
int Count = Key.IndexOf(".....");
return Key.Substring(0, Count + 3);
}
else
{
return Key;
}
}