PDA

View Full Version : سوال: مقایسه کلمات فارسی



csharpdoost
یک شنبه 14 آذر 1389, 10:02 صبح
دوستان سلام
من چند تا از لغات فارسی رو از اکسل میخونم و در داخل برنامه اون رو با یک متغیر دیگه ای که محتوای ان همن کلمه فارسی است مقاسیه میکنم ولی مقایسه انجام نمیشه گویا اون کلمه خونده شده با اون کلمه ذخیره شده با هم تفاوت دارند حالا نمدونم چرا؟
اگه اون رو از اکسل کپی کنم و در داخل برنامه ذخیره کنم مقایسه انجام میشه اما وقتی اون کلمه رو خودم مینویسم گویا با کلمه داخل اکسل مساوی در نمیاد. میشه کمکم کنید؟
با تشکر

ahrimaneahurai
یک شنبه 14 آذر 1389, 16:07 عصر
یعنی می خوای کلمات رو بهت پیشنهاد بده ؟

hadi-z
یک شنبه 14 آذر 1389, 16:22 عصر
اگه اون رو از اکسل کپی کنم و در داخل برنامه ذخیره کنم مقایسه انجام میشه اما وقتی اون کلمه رو خودم مینویسم گویا با کلمه داخل اکسل مساوی در نمیاد. میشه کمکم کنید؟
با تشکر

برای بعضی از حروف فارسی در کد اسکی چند کد وجود داره
مثلا ی با ي فرق میکنه
به همین خاطر این مشکل پیش میاد

csharpdoost
دوشنبه 15 آذر 1389, 09:21 صبح
برای بعضی از حروف فارسی در کد اسکی چند کد وجود داره
مثلا ی با ي فرق میکنه
به همین خاطر این مشکل پیش میاد
دوست عزیز
راه حل؟

Reza_Yarahmadi
دوشنبه 15 آذر 1389, 10:01 صبح
ميتونيد با استفاده از يك تابع اول حروف ي ، ك و همچنين فاصله رو به يك حالت مشترك تبديل كنيد بعد مقايسه رو انجام بديد.
تابعي مثل تابع زير

string YK_Replacer(string Str)
{
return Str.Replace((char)160, (char)32)
.Replace((char)1609, (char)1610)
.Replace((char)1740, (char)1610)
.Replace((char)1603, (char)1705);
}
زمان استفاده هم بصورت زير

if (YK_Replacer("علی") == YK_Replacer("علي"))

ostovarit
دوشنبه 15 آذر 1389, 14:14 عصر
دوست عزیز
راه حل؟

من پیشنهاد میکنم استرینگ ها رو utf-8 کن .... از Encoding استفاده کن تو همین تاپیک های اخریم روشش رو گفتم جستجو کن ...

csharpdoost
سه شنبه 16 آذر 1389, 08:44 صبح
ميتونيد با استفاده از يك تابع اول حروف ي ، ك و همچنين فاصله رو به يك حالت مشترك تبديل كنيد بعد مقايسه رو انجام بديد.
تابعي مثل تابع زير

string YK_Replacer(string Str)
{
return Str.Replace((char)160, (char)32)
.Replace((char)1609, (char)1610)
.Replace((char)1740, (char)1610)
.Replace((char)1603, (char)1705);
}
زمان استفاده هم بصورت زير

if (YK_Replacer("علی") == YK_Replacer("علي"))
دوست من باتشکر خوب بود جواب داد اما من کارکترهای بیشتری رو میخوام و دیگه اینکه منبع این کدها رو داری ؟

Reza_Yarahmadi
سه شنبه 16 آذر 1389, 09:01 صبح
من کارکترهای بیشتری رو میخوام و دیگه اینکه منبع این کدها رو داری ؟ نيازي به كاراكترهاي بيشتر نيست. در فارسي نويسي مشكل در همين كاراكترهاست. ولي اگر ممكنه برنامه شما روي سيستمهاي عربي هم اجرا بشه ميتونيد از لينك زير كدينگ كاراكترهاي مختلف رو پيدا كنيد و متد رو به تناسب نيازتون تغيير بديد.
http://en.wikipedia.org/wiki/List_of_Unicode_characters