PDA

View Full Version : تشخیص وجود حرف فارسی



saed2006
پنج شنبه 23 اردیبهشت 1389, 09:32 صبح
چجوری میتونم تشخیص بدم توی یه رشته حرف فارسی وجود داره یا نه

ricky22
پنج شنبه 23 اردیبهشت 1389, 11:20 صبح
سلام سامان جان
حروف ا رو یکی یک بررسی کن با کد اسکی حروف فارسی

saed2006
پنج شنبه 23 اردیبهشت 1389, 11:44 صبح
ممنونم شاهین جان
کد اسکی حروف فارسی توی چه محدوده ای هست؟

ricky22
پنج شنبه 23 اردیبهشت 1389, 12:06 عصر
امتحان که کردم 199 تا 237
ولی جالبه چند جا خوندم حروف فارسی اسکی ندارن

http://www.barnamenevis.org/forum/showthread.php?t=170125
Asc(TextBox1.Text)
این دستورم امتحان کن برا کدا

saed2006
پنج شنبه 23 اردیبهشت 1389, 13:42 عصر
اینم متدی که تشخیص میده ایا در متن حرف فارسی وجود داره یا نه؟


private bool IsFarsi(string str)
{
foreach (char item in str)
{
int i = Convert.ToInt32(item);
switch (i)
{
case 1632:
return true;

case 1633:return true;

case 1634:return true;

case 1635:return true;

case 1636:return true;

case 1781:return true;

case 1638:return true;

case 1639:return true;

case 1640:return true;

case 1641:return true;

case 1570:return true;

case 1575:return true;

case 1576:return true;

case 1662:return true;

case 1578:return true;

case 1579:return true;

case 1580:return true;

case 1670:return true;

case 1581:return true;

case 1582:return true;

case 1583:return true;

case 1584:return true;

case 1585:return true;

case 1586:return true;

case 1688:return true;

case 1587:return true;

case 1588:return true;

case 1589:return true;

case 1590:return true;

case 1591:return true;

case 1592:return true;

case 1593:return true;

case 1594:return true;

case 1601:return true;

case 1602:return true;

case 1711:return true;

case 1705:return true;

case 1604:return true;

case 1606:return true;

case 1605:return true;

case 1608:return true;

case 1607:return true;

case 1740:return true;

case 1574:return true;

default:
break;
;
}
}
return false;
}

mehdi.mousavi
پنج شنبه 23 اردیبهشت 1389, 14:42 عصر
اینم متدی که تشخیص میده ایا در متن حرف فارسی وجود داره یا نه؟

سلام.
بهتره کدتون رو Refactor کنید. این کد اصلا خوانا نیست. این کد رو ببینید:

private bool IsFarsi(string str)
{
HashSet<int> set = new HashSet<int>(new int[] { 1632, 1633, 1634, 1635, 1636 });
foreach (char ch in str)
{
if (set.Contains((int)ch))
return true;
}

return false;
}


کافیه فقط کدهای مورد نظر رو به array فوق اضافه کنید.

موفق باشید.

پاورقی 1: هر وقت حس کردید کدتون ظاهر بدی داره، احتمال زیاد کد شما به Refactoring نیاز داره.
پاورقی 2: تو کد فوق بهتره تعریف HashSet مربوطه رو بیرون از کلاس یکبار بصورت static انجام بدید که Performance برنامه هم بالا بره.

Netsky
پنج شنبه 23 اردیبهشت 1389, 21:28 عصر
مهدي جون من اين كدي رو كه شما گفتي امتحان كردم ولي اين ارور رو بهم ميده :


The type or namespace name 'HashSet' could not be found (are you missing a using directive or an assembly reference?)
جون مهدي يه توضيحي بده . خيلي هم داخل نت سرچ كردم در باره اين خطا . توي StackOverFlow (http://stackoverflow.com/questions/338540/what-is-special-about-hashsett-in-net-3-5) هم يه چيزايي نوشته بود . راستي مهدي جون من دارم از VS 2005 استفاده ميكنما ؟ مربوط به ورژن FrameWork نيست ؟
راستي شرمنده اگه بي مقدمه باهات پسرخاله شدم ! :خجالت:

mehdi.mousavi
پنج شنبه 23 اردیبهشت 1389, 23:25 عصر
مهدي جون من اين كدي رو كه شما گفتي امتحان كردم ولي اين ارور رو بهم ميده : جون مهدي يه توضيحي بده . خيلي هم داخل نت سرچ كردم در باره اين خطا . توي StackOverFlow (http://stackoverflow.com/questions/338540/what-is-special-about-hashsett-in-net-3-5) هم يه چيزايي نوشته بود . راستي مهدي جون من دارم از VS 2005 استفاده ميكنما ؟ مربوط به ورژن FrameWork نيست ؟ راستي شرمنده اگه بي مقدمه باهات پسرخاله شدم ! :خجالت:

سلام.
اگر به MSDN رجوع کنید (http://msdn.microsoft.com/en-us/library/bb359438.aspx)، پایین این صفحه نوشته این کلاس توی .NET 3.5 و 4.0 پشتیبانی میشه. بالای صفحه هم نوشته که این کلاس در فایل System.Core.dll پیاده سازی شده، پس باید مطمئن بشید که Reference به این فایل هم به پروژه شما اضافه شده.

اما نگران نباشید. از اونجاییکه CLR مربوط به .NET 2.0 تا 3.5 یکسان هستش، شما می تونید .NET 3.5 رو نصب کنید، فایل System.Core.dll رو به Reference پروژه خودتون اضافه کنید و از کلاس HashSet موجود بدون نگرانی استفاده کنید.

موفق باشید.