PDA

View Full Version : سوال: تکست باکس و حروف ی و ک



شرلوک هلمز
چهارشنبه 08 تیر 1390, 16:45 عصر
من میخواهم یک تکس باکس در فرم بگذارم که اگر کی برد کاربر حرف ی و ک را بصورت فارسی تایپ نمیکرد بجای آن حروف ،معادل فارسی آنهارا جایگزین کند تا در جستجوهای بعدی مشکلی پیش نیاید ممنون میشم اگه کسی راهنمایی کنه

farsoft
چهارشنبه 08 تیر 1390, 18:05 عصر
من هم همین مشکل را داشتم و با این تابع مشکلم حل شد

public string SafeFarsiStr(string input)
{
return input.Replace("ی", "ي").Replace("ک", "ك");
}

ببین مشکلت حل می شود

شرلوک هلمز
سه شنبه 21 تیر 1390, 16:17 عصر
دوست عزیز ممنون ولی گمان میکنم بهتر است که یونیکد حروف را گرفته و جایگزین کنیم در واقع فکر میکنم باید هر بار که کاربر یک حرف را در تکس باکس تایپ میکند باید چک نماییم که آن حرف ی یا ک فارسی هست یا نه اگر ی یا ک فارسی نبود آنگاه فارسی آن جایگزین شود در ضمن تا جایی که من میدانم ی عربی چند نوع دارد نه یک نوع
از دوستان ممنون میشوم اگر به این پست توجه بیشتری بکنند

Reza_Yarahmadi
سه شنبه 21 تیر 1390, 18:19 عصر
اینکه به ازا هر حرف وارد شده کاربر بخواید چک کنید که حروف فارسی یا نه و تبدیل انجام بدید و ... خیلی روش جالبی نیست. پیشنهاد من اینه که یک یوزر کنترل درست کنید که از تکست باکس ارث بری کرده باشه ، بعد پراپرتی جدیدی به اون اضافه کنید که این تبدیل رو انجام بده. در نهایت هم توی برنامه از این یوزر کنترل استفاده کنید و برای بحث های بانک اطلاعاتی از پراپرتی جدید استفاده کنید.
برای تبدیل هم از متدی مثل متد زیر میشه استفاده کرد. مشکل ما فارسی کارها بر سر 2 مدل بودن حرف "ک" ، 3 مدل بودن حرف "ی" و 2 مدل بودن فاصله (Space) است که با استفاده از این متد ساده همه حروف یکدست میشن.
String YK_Replacer(String source)
{
return source
.Replace((char)160, (char)32)
.Replace((char)1609, (char)1610)
.Replace((char)1740, (char)1610)
.Replace((char)1603, (char)1705);
}

شرلوک هلمز
چهارشنبه 22 تیر 1390, 08:55 صبح
ممنون دوست عزیز اینطور که من متوجه شدم کد شما یک string میگرد و اگر چنین حروفی در آن باشد آنها را با معادل درست آنها جایگزین میکند و فکر کنم این کد را در رویداد tab change باید نوشت امیدوارم درست متوجه شده باشم.
راستی من نمیدونستم ما با space نیز مشکل داریم ممنون که راهنمایی کردید
و در آخر آیا کدی دارید که با آن بتوان یونیکد حروف را بدست آورد.

Reza_Yarahmadi
چهارشنبه 22 تیر 1390, 18:41 عصر
ممنون دوست عزیز اینطور که من متوجه شدم کد شما یک string میگرد و اگر چنین حروفی در آن باشد آنها را با معادل درست آنها جایگزین میکند و فکر کنم این کد را در رویداد tab change باید نوشت امیدوارم درست متوجه شده باشم.
کد معمولا زمانی که قرار باشه مقایسه ای بین یک سری داده ها انجام بشه و یا زمانی که داده ای برای دیتابیس ارسال میشه استفاده میشه.

و در آخر آیا کدی دارید که با آن بتوان یونیکد حروف را بدست آورد.
کد خاصی نداره با یک Cast ساده میشه این کار رو انجام داد.
int UniNum = (int)'ی';

شرلوک هلمز
پنج شنبه 23 تیر 1390, 00:15 صبح
از شما Reza_Yarahmadi تشکر میکنم فقط یک سوال دیگه . شما کد فارسی حرف ی را برابر با 1610 قرار داده اید ولی این کد حرف ي با دو نقطه در زیر آن را نشان میدهد. فکر کنم کد 1740 برای حرف ی درست باشد البته مطمئن نیستم