View Full Version : مشکل حرف "ی" در جستجو
ali_khodayar
دوشنبه 10 فروردین 1394, 12:05 عصر
با عرض سلام خدمت دوستان
برنامه من یک سری اطلاعات ازجمله نام اشخاص رو از بانک گرفته و در ListView نمایش میده. از BaseAdapter هم استفاده کردم.
جستجو به درستی انجام میشه و اطلاعاتی رو که میخوام رو میتونم فیلتر کنم، اما زمانی که شخصی را جستجو میکنم که حرف "ی" در اسمش هست کلأ هیچ چیزی نمایش داده نمیشه.
اگر امکانش هست راهنمایی کنید که این مسئله (مشکل نه، مسئله) چطوری حل میشه ؟
با تشکر از تمامی دوستان :لبخندساده:
barnamenevisjavan
دوشنبه 10 فروردین 1394, 13:29 عصر
با عرض سلام خدمت دوستان
برنامه من یک سری اطلاعات ازجمله نام اشخاص رو از بانک گرفته و در ListView نمایش میده. از BaseAdapter هم استفاده کردم.
جستجو به درستی انجام میشه و اطلاعاتی رو که میخوام رو میتونم فیلتر کنم، اما زمانی که شخصی را جستجو میکنم که حرف "ی" در اسمش هست کلأ هیچ چیزی نمایش داده نمیشه.
اگر امکانش هست راهنمایی کنید که این مسئله (مشکل نه، مسئله) چطوری حل میشه ؟
با تشکر از تمامی دوستان :لبخندساده:
سلام مشکل حرف "ی" مربوط به این میشه که احتمالا متون ذخیره شده در دیتابیس حرف "ی" اون بصورت عربی ذخیره شده (یعنی ی که زیرش دوتا نقطه داره) و وقتی شما سرچ میکنی از "ی" فارسی که زیرش نقطه نداره استفاده میکنید و به همین دلیل نتیجه نمیده.
برای حل مشکل میتونید هنگام جستجو متن جستجو رو با یه دستور Replace حل کنید.(یعنی "ی"فارسی رو تبدیل به "ی" عربی کنید.
ali_khodayar
دوشنبه 10 فروردین 1394, 14:32 عصر
سلام مشکل حرف "ی" مربوط به این میشه که احتمالا متون ذخیره شده در دیتابیس حرف "ی" اون بصورت عربی ذخیره شده (یعنی ی که زیرش دوتا نقطه داره) و وقتی شما سرچ میکنی از "ی" فارسی که زیرش نقطه نداره استفاده میکنید و به همین دلیل نتیجه نمیده.
برای حل مشکل میتونید هنگام جستجو متن جستجو رو با یه دستور Replace حل کنید.(یعنی "ی"فارسی رو تبدیل به "ی" عربی کنید.
ممنونم از پاسختون .
این مطلبی که شما فرمودید درسته ، تست کردم و زمانی که با "ي" جستجو میکنم جواب میده .
اما بانک من از اطلاعاتی که در برنامه دیگری است پر میشه و من روی ورود آنها کنترلی ندارم. به همین دلیل امکان داره هر دو نوع "ی،ي" در بانکم وجود داشته باشه.
راه حلی برای این هست؟
barnamenevisjavan
دوشنبه 10 فروردین 1394, 14:41 عصر
ممنونم از پاسختون .
این مطلبی که شما فرمودید درسته ، تست کردم و زمانی که با "ي" جستجو میکنم جواب میده .
اما بانک من از اطلاعاتی که در برنامه دیگری است پر میشه و من روی ورود آنها کنترلی ندارم. به همین دلیل امکان داره هر دو نوع "ی،ي" در بانکم وجود داشته باشه.
راه حلی برای این هست؟
موقع خوندن و نوشتن کل "ی" هارو به یه "ی" ثابت با دستور ریپلیس تبدیل کن
ali_khodayar
دوشنبه 10 فروردین 1394, 14:46 عصر
من از این روش برای جستجو استفاده می کنم.
public void filter(String charText) { charText = charText.toLowerCase(Locale.getDefault());
jointList.clear();
if (charText.length() == 0) {
jointList.addAll(arraylist);
}
else
{
for (Joint jt : arraylist)
{
if (String.valueOf(jt.getJointAddress()).toLowerCase( Locale.getDefault()).contains(charText))
{
jointList.add(jt);
}
}
}
notifyDataSetChanged();
}
یعنی در اول تابع یه شرط بزارم که اگر در ورودی تابع حرف ي وجود داشت اون رو به ی فارسی تبدیل کنه؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.