من میخواهم یک تکس باکس در فرم بگذارم که اگر کی برد کاربر حرف ی و ک را بصورت فارسی تایپ نمیکرد بجای آن حروف ،معادل فارسی آنهارا جایگزین کند تا در جستجوهای بعدی مشکلی پیش نیاید ممنون میشم اگه کسی راهنمایی کنه
من میخواهم یک تکس باکس در فرم بگذارم که اگر کی برد کاربر حرف ی و ک را بصورت فارسی تایپ نمیکرد بجای آن حروف ،معادل فارسی آنهارا جایگزین کند تا در جستجوهای بعدی مشکلی پیش نیاید ممنون میشم اگه کسی راهنمایی کنه
من هم همین مشکل را داشتم و با این تابع مشکلم حل شد
public string SafeFarsiStr(string input)
{
return input.Replace("ی", "ي").Replace("ک", "ك");
}
ببین مشکلت حل می شود
دوست عزیز ممنون ولی گمان میکنم بهتر است که یونیکد حروف را گرفته و جایگزین کنیم در واقع فکر میکنم باید هر بار که کاربر یک حرف را در تکس باکس تایپ میکند باید چک نماییم که آن حرف ی یا ک فارسی هست یا نه اگر ی یا ک فارسی نبود آنگاه فارسی آن جایگزین شود در ضمن تا جایی که من میدانم ی عربی چند نوع دارد نه یک نوع
از دوستان ممنون میشوم اگر به این پست توجه بیشتری بکنند
اینکه به ازا هر حرف وارد شده کاربر بخواید چک کنید که حروف فارسی یا نه و تبدیل انجام بدید و ... خیلی روش جالبی نیست. پیشنهاد من اینه که یک یوزر کنترل درست کنید که از تکست باکس ارث بری کرده باشه ، بعد پراپرتی جدیدی به اون اضافه کنید که این تبدیل رو انجام بده. در نهایت هم توی برنامه از این یوزر کنترل استفاده کنید و برای بحث های بانک اطلاعاتی از پراپرتی جدید استفاده کنید.
برای تبدیل هم از متدی مثل متد زیر میشه استفاده کرد. مشکل ما فارسی کارها بر سر 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);
}
ممنون دوست عزیز اینطور که من متوجه شدم کد شما یک string میگرد و اگر چنین حروفی در آن باشد آنها را با معادل درست آنها جایگزین میکند و فکر کنم این کد را در رویداد tab change باید نوشت امیدوارم درست متوجه شده باشم.
راستی من نمیدونستم ما با space نیز مشکل داریم ممنون که راهنمایی کردید
و در آخر آیا کدی دارید که با آن بتوان یونیکد حروف را بدست آورد.
کد معمولا زمانی که قرار باشه مقایسه ای بین یک سری داده ها انجام بشه و یا زمانی که داده ای برای دیتابیس ارسال میشه استفاده میشه.ممنون دوست عزیز اینطور که من متوجه شدم کد شما یک string میگرد و اگر چنین حروفی در آن باشد آنها را با معادل درست آنها جایگزین میکند و فکر کنم این کد را در رویداد tab change باید نوشت امیدوارم درست متوجه شده باشم.
کد خاصی نداره با یک Cast ساده میشه این کار رو انجام داد.و در آخر آیا کدی دارید که با آن بتوان یونیکد حروف را بدست آورد.
int UniNum = (int)'ی';
از شما Reza_Yarahmadi تشکر میکنم فقط یک سوال دیگه . شما کد فارسی حرف ی را برابر با 1610 قرار داده اید ولی این کد حرف ي با دو نقطه در زیر آن را نشان میدهد. فکر کنم کد 1740 برای حرف ی درست باشد البته مطمئن نیستم