|
|
|
C# WipApp ช่วยออกแบบโค้ด เปลี่ยน ตัวเลขให้เป็นอักษร ในกรณีที่เกิน ล้าน ให้หน่อยครับ |
|
|
|
|
|
|
|
Code (C#)
public static string ToArabicToThaiText(this object input)
{
string txtReturn = "",strdecVal = "",n;
string[] num = { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ" };
string[] rank = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
// Convert.ToDouble ก่อน
double amount;
try { amount = Convert.ToDouble(input); }
catch { amount = 0; }
//แยก split จาก .
string[] temp = amount.ToString().Split('.');
//ค่าหน้า .
string intVal = temp[0];
//ค่าหลัง . ไม่มี . ใช้เป็น ค่าว่าง
string decVal = (temp.Length > 1) ? temp[1] : "";
// เอาค่า หน้าจุด มาคิด แยกทีละ 6 ตัว ใส่หน่วย
/*
*/
//เอาหลัง . มาคิด ไม่ใส่หน่วย
for (int i = 0; i < decVal.Length; i++)
{
strdecVal += num[Convert.ToInt32(decVal.Substring(i, 1))];
}
return txtReturn;
}
ผมเขียนโปรแกรม KidsLearning ไว้แจก นะครับ กะว่าจะเขียนให้ครบตั้งแต่ อนุบาล ไปถึง ม.6 ให้ได้ หลายวิชาที่สุดเท่าที่จะทำได้
หามีใครอยากแนะนำให้เพิ่ม ความรู้ตัวไหน ก็บอกได้นะครับ ยิ่ง ส่งโค้ดมาด้วยยิ่งดีใหญ่(5555)
ตัวอย่างนะครับ
123456789 >> หนึ่งร้อยยี่สิบสามล้านสี่แสนห้าหมื่นหกพันเจ็ดร้อยแปดสิบเก้า
123456789012345 >>หนึ่งร้อยยี่สิบสามล้านสี่แสนห้าหมื่นหกพันเจ็ดร้อยแปดสิบเก้าล้านหนึ่งหมื่นสองพันสามร้อยสี่สิบห้า
1234567890987650000 >>หนึ่งล้านสองแสนสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดล้านแปดแสนเก้าหมื่นเก้าร้อยแปดสิบเจ็ดล้านหกแสนห้าหมื่น
Tag : .NET, C#, VS 2013 (.NET 4.x)
|
ประวัติการแก้ไข 2019-03-19 10:43:18
|
|
|
|
|
Date :
2019-03-19 10:29:32 |
By :
lamaka.tor |
View :
1136 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
#region _ToArabicToThaiText
public static string ToArabicToThaiText(this object input)
{
string txtReturn = "",txtdecVal = "",txtintVal = "",n;
string[] num = { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ" };
string[] rank = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
// Convert.ToDouble ก่อน
double amount;
try { amount = Convert.ToDouble(input); }
catch { amount = 0; }
//แยก split จาก .
string[] temp = amount.ToString().Split('.');
//ค่าหน้า .
string intVal = temp[0];
//ค่าหลัง . ไม่มี . ใช้เป็น ค่าว่าง
string decVal = (temp.Length > 1) ? temp[1] : "";
for (int i = 0; i < intVal.Length; i++)
{
n = intVal.Substring(i, 1);
if (n != "0")
{
if (((i == (intVal.Length - 1)) || (i == (intVal.Length - 7) || (i == (intVal.Length - 13)))) && (n == "1"))
txtintVal += "เอ็ด";
else if (((i == (intVal.Length - 2)) || (i == (intVal.Length - 8) || (i == (intVal.Length - 14)))) && (n == "2"))
txtintVal += "ยี่";
else if ((i == (intVal.Length - 2)) && (n == "1"))
txtintVal += "";
else
txtintVal += num[Convert.ToInt32(n)];
txtintVal += rank[(intVal.Length - i) - 1];
}
}
//เอาหลัง . มาคิด ไม่ใส่หน่วย
for (int i = 0; i < decVal.Length; i++)
{
txtdecVal += (decVal.Substring(i, 1) == "0")?"ศูนย์":num[Convert.ToInt32(decVal.Substring(i, 1))];
}
//นำ ทั้ง ก่อน และ หลัง จุด มารวมกัน
txtReturn = txtintVal;
if(txtdecVal.Trim().Length>0)
txtReturn += "จุด" + txtdecVal;
//ส่งกลับค่า
return txtReturn;
}
public static string ToArabicToThaiText(this int input)
{
return input.ToString().ToArabicToThaiText();
}
public static string ToArabicToThaiText(this double input)
{
return input.ToString().ToArabicToThaiText();
}
#endregion
|
|
|
|
|
Date :
2019-03-19 12:51:01 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แต่มันยังไม่เป็น ศูนย์ศูนย์ ต่อท้ายจุด
เดี๋ยวคงต้องแก้ให้สมบูรณ์กว่านี้ครับ
|
|
|
|
|
Date :
2019-03-19 12:55:44 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่านเฉพาะจำนวนทศนิยม (tmp[1])
Code (C#)
var x1 = decimalPlaceOnly(tmp[1]);
var x2 = decimalPlaceOnly(".1284500");
var x3 = "จุด" + x2; //จุดหนึ่งสองแตดสี่ห้าศูนย์ศูนย์
private string decimalPlaceOnly(string decValue)
{
return new Regex("[0-9]").Replace(decValue.Replace(".",""), new MatchEvaluator(z =>
{
return new string[] { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แตด", "เก้า" }[int.Parse(z.Value)];
}));
}
|
|
|
|
|
Date :
2019-03-19 16:06:32 |
By :
หน้าฮี |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โลกมันกว้างนะ
ลองค้นหาดู พี่ goo ก็มี
https://www.nuget.org/packages/ThaiBahtText/
ปล.
ถ้าจะเขียนโปรแกรมแจกเด็กๆ ควรจะเขียนพวก java หรือก็เว็บไปเลยครับ ถ้าเป็นงานประเภทนี้คิดว่าจะเหมาะกว่า
ใส่รูป ใส่สีข้อความ ทำ animation ง่ายกว่าเขียน c# เยอะครับ "คงไม่ได้ทำให้ท้อนะครับ"
การเรียนรู้สิ่งใหม่ๆย่อมไม่มีวันสิ้นสุด
|
|
|
|
|
Date :
2019-03-20 14:30:12 |
By :
บัญดิษฐ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|