PDA

View Full Version : تبدیل اعداد به حروف



cactuskhan
یک شنبه 04 شهریور 1386, 13:05 عصر
سلام

آیا کامپونتی وجود داره که اعداد رو به حروف برگردونه ؟؟
البته فارسی !

iranrose63
یک شنبه 04 شهریور 1386, 13:17 عصر
فکر کنم کد زیر کارتو راه بندازه یه label بذار رو فرمت و یه textbox تو TextChange کنترل textbox کد زیر رو بذار


if (tbdigit1.Text.Length != 0)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 0;
tbdigit1.Text = Int64.Parse(tbdigit1.Text, NumberStyles.AllowThousands).ToString("N", nfi);
tbdigit1.Select(tbdigit1.Text.Length, 0);
label1.Text = numToStr(UInt64.Parse(tbdigit1.Text, NumberStyles.AllowThousands), 1);
}
else
label1.Text = "";

maxlength اون رو هم برابر 23 قرار بده

اینم تابع numtostr


private string numToStr(ulong num, int level)
{
string[][] numstr = new string[][]
{
new string[]{"صفر","یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه"},
new string[]{"ده","یازده","دوازده","سیزده","چهارده","پانزده","شانزده","هفتده","هیجده","نوزده",
"بیست","سی","چهل","پنجاه","شست","هفتاد","هشتاد","نود"},
new string[]{"","صد","دویست","سیصد","چهارصد","پانصد","ششصد","هفتصد","هشتصد","نهصد"} ,
new string[]{"هزار"},
new string[]{"میلیون"},
new string[]{"میلیارد"},
new string[]{"تریلیون"},
new string[]{"تریلیارد"},
};
switch (level)
{
case 1:
if (num < 10)
return numstr[0][Convert.ToInt32(num)];
else
{
if (num % 100 < 20 && num % 100 > 9)
{
if (num < 20)
return numstr[1][Convert.ToInt32(num % 10)];
else
return numToStr(num / 100, 3) + " و " + numstr[1][Convert.ToInt32(num % 10)];
}
else
return numToStr(num / 10, 2) + ((num % 10 != 0) ? " و " + numstr[0][Convert.ToInt32(num % 10)] : "");
}
case 2:
if (num < 10)
return numstr[1][Convert.ToInt32(num % 10 + 8)];
else
return numToStr(num / 10, 3) + ((num % 10 >= 2) ? " و " + numstr[1][Convert.ToInt32(num % 10 + 8)] : "");
case 3:
if (num < 10)
return numstr[2][Convert.ToInt32(num % 10)];
else
return numToStr(num / 10, 4) + ((num % 10 != 0) ? " و " : "") + numstr[2][Convert.ToInt32(num % 10)];
case 4:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[3][0];
else
return numToStr(num / 1000, 5) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[3][0] : "");
case 5:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[4][0];
else
return numToStr(num / 1000, 6) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[4][0] : "");
case 6:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[5][0];
else
return numToStr(num / 1000, 7) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[5][0] : "");
case 7:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[6][0];
else
return numToStr(num / 1000, 8) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[6][0] : "");
case 8:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[7][0];
else
return "";
default:
return "";
}

}

cactuskhan
یک شنبه 04 شهریور 1386, 14:22 عصر
جواب نداد !
زحمت بکش خودت تو فایل بزارش وقتی مطمئن شدی کار میکنه همین جا آپلود کن !

cactuskhan
یک شنبه 04 شهریور 1386, 14:57 عصر
در ضمن من میخوام تو IE کنه ! گفتم احتمالا سوال مربوط میشه به CSHARP واسه همین تو قسمت asp.net مطرح نکردم !

PC2st
یک شنبه 04 شهریور 1386, 16:54 عصر
http://barnamenevis.org/forum/showthread.php?t=76198

choobin84
یک شنبه 04 شهریور 1386, 17:05 عصر
جواب نداد !
زحمت بکش خودت تو فایل بزارش وقتی مطمئن شدی کار میکنه همین جا آپلود کن !

کد بالا ، محشره.
خیلی عالیه ، تعجب کردم از این پست شما ، کاکتوس خان.
یکمی اگر زحمت می کشیدید ،خطاهایی که بهتون میداد رو چک می کردید قضیه حل بود.

فضای نام:

using System.Globalization;منظور از tbdigit1 همون textBox1 هست.
یک label هم باید روی فرم بگذارید.

خدائیش خیلی باحال بود. ممنون

hdv212
یک شنبه 04 شهریور 1386, 17:18 عصر
این لینک، مربوط به یه کلاسه که یه سری ابزار فارسی از جمله تبدیل حروف به متن رو داره:
http://www.codeproject.com/cs/miscctrl/FarsiLibrary.asp

iranrose63
دوشنبه 05 شهریور 1386, 06:41 صبح
جواب نداد !
زحمت بکش خودت تو فایل بزارش وقتی مطمئن شدی کار میکنه همین جا آپلود کن !

من تا یه چیزی رو خودم امتحان نکرده باشم و جواب نگرفته باشم اینجا نمی گذارم پس مطمئنم که جواب میده اینم همون برنامه که خودم تست کردم

cactuskhan
دوشنبه 05 شهریور 1386, 08:35 صبح
کد بالا ، محشره.
خیلی عالیه ، تعجب کردم از این پست شما ، کاکتوس خان.
یکمی اگر زحمت می کشیدید ،خطاهایی که بهتون میداد رو چک می کردید قضیه حل بود.

فضای نام:

using System.Globalization;منظور از tbdigit1 همون textBox1 هست.
یک label هم باید روی فرم بگذارید.

خدائیش خیلی باحال بود. ممنون

این namespace که شما معرفی کردی رو میشناسم ! ولی مشکل جای دیگس که قبلا هم گفتم
من نسخه تحت وب اون رو میخوام نه ویندوز !
دوستمون زحمت کشیدن فیلش رو هم گذاشتن ولی ویندوزیه !

textbox تو وب خاصیتی به نام select نداره !!:ناراحت:

choobin84
دوشنبه 05 شهریور 1386, 14:03 عصر
من نسخه تحت وب اون رو میخوام نه ویندوز !
دوستمون زحمت کشیدن فیلش رو هم گذاشتن ولی ویندوزیه !
:ناراحت:

مطرح کردن این سئوال ، جاش یه جای دیگ اس.

نکنه ما رو گذاشتی سرکار...

hdv212
سه شنبه 06 شهریور 1386, 03:44 صبح
این لینک، مربوط به یه کلاسه که یه سری ابزار فارسی از جمله تبدیل حروف به متن رو داره:
http://www.codeproject.com/cs/miscctrl/FarsiLibrary.asp
با اینکه زمانش گذشته، ولی شاید به جواب مطلوب نرسیده باشید، به هرحال من برای رفع ابهام از ارتباط پستم به این تاپیک بگم که پس از دانلود دموی مورد نظر و unzip کردن اون، اون رو اجراش کنید، میبینید که خیلی کارا انجام میده(از دکمه های زیادش معلومه)، بر روی دکمه ی other utils کلیک کنید در پنجره ای که ظاهر میشه عددتون رو بنویسید و دکمه ی تبدیل رو بزنید، میبینید که عدد رو به صورت متن فارسی براتون مینویسه، این دقیقا هدف این تاپیک بود، اینو برای اون دسته از افرادی گفتم که فکر میکردن این پست من به این تاپیک مربوط نمیشه.

s_ahmadneya
شنبه 16 آذر 1387, 18:51 عصر
برنامه تبدیل عدد به حروف را از پست 174 لینک زیر دانلود نمایید. موفق باشید

http://barnamenevis.org/forum/showthread.php?p=645188#post645188