PDA

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



ashkan1234
شنبه 05 مرداد 1392, 20:04 عصر
سلام!
در استیمول ریپورت چطور میشه یک عدد رو بصورت حروف در آورد؟!!
آیا تابعی برای اینکار داره؟!!
قبلا دیده بودم یجا!
ولی الان پیداش نمیکنم!

danialafshari
شنبه 05 مرداد 1392, 22:15 عصر
سلام
چرا در استیمول؟
یک Variant در استیمول تعریف کن، در فرم تبدیل به حرف کنه و به String استیمول پاس بده

setareh masompoor
یک شنبه 06 مرداد 1392, 09:19 صبح
فكر كنم شما منظورت اينه كه عدد 5 رو به صورت حروف يعني (پنج) بنويسه آره؟؟؟
دقيقتر بگير تا اگه تونستيم كمكتون كنيم

ashkan1234
یک شنبه 06 مرداد 1392, 14:18 عصر
بله منظورم همینه که 5 رو بنویسه پنج!
وگرنه تبدیل int به string که کار مشکلی نیست!

setareh masompoor
دوشنبه 07 مرداد 1392, 13:46 عصر
اين كد فكر كنم به دردت ميخوره



private void btn_ok_Click(object sender, EventArgs e)
{
number nc = new number ();
lbl_result.Text = nc.MSMNumStFar(Int64.Parse(txt_num.Text));

}


اينم كلاس number

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace number
{
public class number
{
string[,] One = new string[10, 2];
string[,] Tow = new string[10, 2];
string[,] Tree = new string[10, 2];
string[,] Four = new string[10, 2];
string[] Cut3Str = new string[6];
int HezarehControl;

public string MSMNumStFar(long x)
{
string k = Convert.ToString(x);

One[1, 0] = "1"; One[1, 1] = "یک";
One[2, 0] = "2"; One[2, 1] = "دو";
One[3, 0] = "3"; One[3, 1] = "سه";
One[4, 0] = "4"; One[4, 1] = "چهار";
One[5, 0] = "5"; One[5, 1] = "پنج";
One[6, 0] = "6"; One[6, 1] = "شش";
One[7, 0] = "7"; One[7, 1] = "هفت";
One[8, 0] = "8"; One[8, 1] = "هشت";
One[9, 0] = "9"; One[9, 1] = "نه";

Tow[1, 0] = "11"; Tow[1, 1] = "یازده";
Tow[2, 0] = "12"; Tow[2, 1] = "دوازده";
Tow[3, 0] = "13"; Tow[3, 1] = "سیزده";
Tow[4, 0] = "14"; Tow[4, 1] = "چهارده";
Tow[5, 0] = "15"; Tow[5, 1] = "پانزده";
Tow[6, 0] = "16"; Tow[6, 1] = "شانزده";
Tow[7, 0] = "17"; Tow[7, 1] = "هفده";
Tow[8, 0] = "18"; Tow[8, 1] = "هجده";
Tow[9, 0] = "19"; Tow[9, 1] = "نوزده";

Tree[1, 0] = "10"; Tree[1, 1] = "ده";
Tree[2, 0] = "20"; Tree[2, 1] = "بیست";
Tree[3, 0] = "30"; Tree[3, 1] = "سی";
Tree[4, 0] = "40"; Tree[4, 1] = "چهل";
Tree[5, 0] = "50"; Tree[5, 1] = "پنجاه";
Tree[6, 0] = "60"; Tree[6, 1] = "شصت";
Tree[7, 0] = "70"; Tree[7, 1] = "هفتاد";
Tree[8, 0] = "80"; Tree[8, 1] = "هشتاد";
Tree[9, 0] = "90"; Tree[9, 1] = "نود";

Four[1, 0] = "100"; Four[1, 1] = "صد";
Four[2, 0] = "200"; Four[2, 1] = "دویست";
Four[3, 0] = "300"; Four[3, 1] = "سیصد";
Four[4, 0] = "400"; Four[4, 1] = "چهارصد";
Four[5, 0] = "500"; Four[5, 1] = "پانصد";
Four[6, 0] = "600"; Four[6, 1] = "ششصد";
Four[7, 0] = "700"; Four[7, 1] = "هفتصد";
Four[8, 0] = "800"; Four[8, 1] = "هشتصد";
Four[9, 0] = "900"; Four[9, 1] = "نهصد";

string MsmStr = "";
string[] Hezareh = new string[6];
Hezareh[2] = " هزار و";
Hezareh[3] = " میلیون و";
Hezareh[4] = " میلیارد و";
Hezareh[5] = " بیلیون و";
if (k.Length <= 3)
return MSMNumFarLen3(k);
else
{
MSMCut3(k);
for (int h = HezarehControl; h >= 1; --h)
if (Cut3Str[h] != "000") MsmStr = MsmStr + MSMNumFarLen3(Cut3Str[h]) + Hezareh[h];
}
//1000 - 10000 , ...
if (MsmStr.Length == 0) return "";
if (k.Substring(k.Trim().Length - 3) == "000")
return MsmStr.Substring(0, MsmStr.Length - 2).Trim();
else
return MsmStr.Trim();
}

void MSMCut3(string mehr)
{
HezarehControl = 1;
while (mehr != "")
{
if (mehr.Length > 3)
{
Cut3Str[HezarehControl] = mehr.Substring(mehr.Length - 3);
}
else
{
Cut3Str[HezarehControl] = mehr;
return;
}
mehr = mehr.Substring(0, mehr.Length - 3);
HezarehControl = HezarehControl + 1;
}
}

string MSMNumFarLen3(string i)
{
switch (i.Length)
{
case 1:
return One[Convert.ToInt16(i), 1];
//break;
case 2:
if (i.Substring(i.Length - 1, 1) == "0")
return Tree[Convert.ToInt16(i.Substring(0, 1)), 1];
else if (Convert.ToInt16(i) >= 11 && Convert.ToInt16(i) <= 19)
return Tow[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
else
return Tree[Convert.ToInt16(i.Substring(0, 1)), 1]
+ " و " + One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
case 3:
if (i.Substring(1, 1) == "0" && i.Substring(0, 1) != "0")
{
//001
if (Four[Convert.ToInt16(i.Substring(0, 1)), 1] != "")
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] +
" و " + One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
else
return One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
}
else if (i.Substring(1, 1) == "0" && i.Substring(i.Length - 1, 1) == "0")
return Four[Convert.ToInt16(i.Substring(0, 1)), 1];
else if (i.Substring(i.Length - 1, 1) == "0")
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] + " و " +
Tree[Convert.ToInt16(i.Substring(1, 1)), 1];
else if (Convert.ToInt16(i.Substring(1, 2)) >= 11 && Convert.ToInt16(i.Substring(1, 2)) <= 19)
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] +
Tow[Convert.ToInt16(i.Substring(2, 1)), 1];
else
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] + " و " +
Tree[Convert.ToInt16(i.Substring(1, 1)), 1] + " و " +
One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
}
return "";
}
}
}

amir200h
دوشنبه 07 مرداد 1392, 14:06 عصر
اين كد فكر كنم به دردت ميخوره



private void btn_ok_Click(object sender, EventArgs e)
{
number nc = new number ();
lbl_result.Text = nc.MSMNumStFar(Int64.Parse(txt_num.Text));

}


اينم كلاس number

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace number
{
public class number
{
string[,] One = new string[10, 2];
string[,] Tow = new string[10, 2];
string[,] Tree = new string[10, 2];
string[,] Four = new string[10, 2];
string[] Cut3Str = new string[6];
int HezarehControl;

public string MSMNumStFar(long x)
{
string k = Convert.ToString(x);

One[1, 0] = "1"; One[1, 1] = "یک";
One[2, 0] = "2"; One[2, 1] = "دو";
One[3, 0] = "3"; One[3, 1] = "سه";
One[4, 0] = "4"; One[4, 1] = "چهار";
One[5, 0] = "5"; One[5, 1] = "پنج";
One[6, 0] = "6"; One[6, 1] = "شش";
One[7, 0] = "7"; One[7, 1] = "هفت";
One[8, 0] = "8"; One[8, 1] = "هشت";
One[9, 0] = "9"; One[9, 1] = "نه";

Tow[1, 0] = "11"; Tow[1, 1] = "یازده";
Tow[2, 0] = "12"; Tow[2, 1] = "دوازده";
Tow[3, 0] = "13"; Tow[3, 1] = "سیزده";
Tow[4, 0] = "14"; Tow[4, 1] = "چهارده";
Tow[5, 0] = "15"; Tow[5, 1] = "پانزده";
Tow[6, 0] = "16"; Tow[6, 1] = "شانزده";
Tow[7, 0] = "17"; Tow[7, 1] = "هفده";
Tow[8, 0] = "18"; Tow[8, 1] = "هجده";
Tow[9, 0] = "19"; Tow[9, 1] = "نوزده";

Tree[1, 0] = "10"; Tree[1, 1] = "ده";
Tree[2, 0] = "20"; Tree[2, 1] = "بیست";
Tree[3, 0] = "30"; Tree[3, 1] = "سی";
Tree[4, 0] = "40"; Tree[4, 1] = "چهل";
Tree[5, 0] = "50"; Tree[5, 1] = "پنجاه";
Tree[6, 0] = "60"; Tree[6, 1] = "شصت";
Tree[7, 0] = "70"; Tree[7, 1] = "هفتاد";
Tree[8, 0] = "80"; Tree[8, 1] = "هشتاد";
Tree[9, 0] = "90"; Tree[9, 1] = "نود";

Four[1, 0] = "100"; Four[1, 1] = "صد";
Four[2, 0] = "200"; Four[2, 1] = "دویست";
Four[3, 0] = "300"; Four[3, 1] = "سیصد";
Four[4, 0] = "400"; Four[4, 1] = "چهارصد";
Four[5, 0] = "500"; Four[5, 1] = "پانصد";
Four[6, 0] = "600"; Four[6, 1] = "ششصد";
Four[7, 0] = "700"; Four[7, 1] = "هفتصد";
Four[8, 0] = "800"; Four[8, 1] = "هشتصد";
Four[9, 0] = "900"; Four[9, 1] = "نهصد";

string MsmStr = "";
string[] Hezareh = new string[6];
Hezareh[2] = " هزار و";
Hezareh[3] = " میلیون و";
Hezareh[4] = " میلیارد و";
Hezareh[5] = " بیلیون و";
if (k.Length <= 3)
return MSMNumFarLen3(k);
else
{
MSMCut3(k);
for (int h = HezarehControl; h >= 1; --h)
if (Cut3Str[h] != "000") MsmStr = MsmStr + MSMNumFarLen3(Cut3Str[h]) + Hezareh[h];
}
//1000 - 10000 , ...
if (MsmStr.Length == 0) return "";
if (k.Substring(k.Trim().Length - 3) == "000")
return MsmStr.Substring(0, MsmStr.Length - 2).Trim();
else
return MsmStr.Trim();
}

void MSMCut3(string mehr)
{
HezarehControl = 1;
while (mehr != "")
{
if (mehr.Length > 3)
{
Cut3Str[HezarehControl] = mehr.Substring(mehr.Length - 3);
}
else
{
Cut3Str[HezarehControl] = mehr;
return;
}
mehr = mehr.Substring(0, mehr.Length - 3);
HezarehControl = HezarehControl + 1;
}
}

string MSMNumFarLen3(string i)
{
switch (i.Length)
{
case 1:
return One[Convert.ToInt16(i), 1];
//break;
case 2:
if (i.Substring(i.Length - 1, 1) == "0")
return Tree[Convert.ToInt16(i.Substring(0, 1)), 1];
else if (Convert.ToInt16(i) >= 11 && Convert.ToInt16(i) <= 19)
return Tow[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
else
return Tree[Convert.ToInt16(i.Substring(0, 1)), 1]
+ " و " + One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
case 3:
if (i.Substring(1, 1) == "0" && i.Substring(0, 1) != "0")
{
//001
if (Four[Convert.ToInt16(i.Substring(0, 1)), 1] != "")
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] +
" و " + One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
else
return One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
}
else if (i.Substring(1, 1) == "0" && i.Substring(i.Length - 1, 1) == "0")
return Four[Convert.ToInt16(i.Substring(0, 1)), 1];
else if (i.Substring(i.Length - 1, 1) == "0")
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] + " و " +
Tree[Convert.ToInt16(i.Substring(1, 1)), 1];
else if (Convert.ToInt16(i.Substring(1, 2)) >= 11 && Convert.ToInt16(i.Substring(1, 2)) <= 19)
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] +
Tow[Convert.ToInt16(i.Substring(2, 1)), 1];
else
return Four[Convert.ToInt16(i.Substring(0, 1)), 1] + " و " +
Tree[Convert.ToInt16(i.Substring(1, 1)), 1] + " و " +
One[Convert.ToInt16(i.Substring(i.Length - 1, 1)), 1];
}
return "";
}
}
}



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

ashkan1234
دوشنبه 07 مرداد 1392, 14:52 عصر
یادمه توی استیمول یه تابعی داشت که نیازی به این کدنویسی و سی شارپ نبود!
مثلا تابع Line رو دیدید از توابع استیمول؟!
یه همچین چیزی داشت واسه تبدیل عدد به حروف!
منتهی هرچی فکرکردم وگشتم یادم نیومد!
اصلا علت ایجاد این تاپیک این بود که کد نویسی نکنم!
اگه راهش نیست که ترجیحا توی سی شارپ تبدیلش میکنم و بعد میفرستم!
ولی با این حال از همتون ممنونم!:لبخند:

Himalaya
دوشنبه 07 مرداد 1392, 15:36 عصر
سلام

تو ورژن 2012 به بعد



{ToWordsFa(123456789)}