|
|
|
Code สำหรับแปลงค่าตัวเลขมาเป็นคำอ่านภาษาไทยครับ C# ครับ |
|
|
|
|
|
|
|
Code (C#)
public string ConvertToBathText<T>(T number)
{
Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(1, "สิบ");
dic.Add(2, "ร้อย");
dic.Add(3, "พัน");
dic.Add(4, "หมื่น");
dic.Add(5, "แสน");
dic.Add(6, "ล้าน");
dic.Add(7, "สิบ");
dic.Add(8, "ร้อย");
dic.Add(9, "พัน");
dic.Add(10, "หมื่น");
dic.Add(11, "แสน");
Dictionary<int, string> dicNum = new Dictionary<int, string>();
dicNum.Add(1, "หนึ่ง");
dicNum.Add(2, "สอง");
dicNum.Add(3, "สาม");
dicNum.Add(4, "สึ่");
dicNum.Add(5, "ห้า");
dicNum.Add(6, "หก");
dicNum.Add(7, "เจ็ด");
dicNum.Add(8, "แปด");
dicNum.Add(9, "เก้า");
string data1 = System.Text.RegularExpressions.Regex.Match(Convert.ToString(number),@"\w+(?=\.)?").Value;
string data2 = System.Text.RegularExpressions.Regex.Match(Convert.ToString(number),@"(?<=\.)\d+").Value;
int nLen = data1.Length;
int mLen = data2.Length;
StringBuilder sb = new StringBuilder();
Func<int, string> fu = (x) => (from z in dic where z.Key == x select z.Value).FirstOrDefault();
Func<int, string> fuNum = (z) => (from x in dicNum where x.Key == z select x.Value).FirstOrDefault();
char[] cNumber = Convert.ToString(data1).ToCharArray();
char[] cNumber2 = Convert.ToString(data2).ToCharArray();
foreach (char c in cNumber)
{
string sWord = string.Empty; // เก็บชื่อเรียกของหลักตัวเลข
string sCount = string.Empty; // เก็บชื่อเรียกหน่วยนับ
string sNumber = Convert.ToString(c);
int n = Convert.ToInt32(sNumber);
sCount = fu(nLen - 1);
sWord = fuNum(n);
if (sWord == "หนึ่ง" && string.IsNullOrEmpty(sCount))
{
sWord = "เอ็ด";
}
else if (sCount == "สิบ" && sWord == "หนึ่ง")
{
sWord = string.Empty;
}
else if (sWord == "สอง" && sCount == "สิบ")
{
sWord = "ยี่";
}
else if (string.IsNullOrEmpty(sWord))
{
sWord = string.Empty;
sCount = string.Empty;
}
sb.Append(sWord + sCount);
nLen -= 1;
}
sb.Append("บาท");
if (!string.IsNullOrEmpty(data2))
{
foreach (char c in cNumber2)
{
string sWord = string.Empty; // เก็บชื่อเรียกของหลักตัวเลข
string sCount = string.Empty; // เก็บชื่อเรียกหน่วยนับ
string sNumber = Convert.ToString(c);
int n = Convert.ToInt32(sNumber);
sCount = fu(nLen - 1);
sWord = fuNum(n);
if (sWord == "สอง")
{
sWord = "ยี่สิบ";
}
else
{
sWord += "สิบ";
}
sb.Append(sWord + sCount);
mLen -= 1;
}
sb.Append("สตางค์");
}
string value = sb.ToString();
return value;
}
Tag : .NET, C#
|
|
|
|
|
|
Date :
2014-12-18 17:55:57 |
By :
Programmer ด้อยปัญญา |
View :
2099 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
|
|
|
|
|
Date :
2020-05-27 15:24:24 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Source Code ห่วยฯ แบบนี้นะ ผมเขียนด้วย C# บรรทัดเดียว
ปล. เขียนมาตั้งแต่ Dbase/FoxPro/VB/VB.NET/C#/etc...
|
|
|
|
|
Date :
2020-05-29 00:15:39 |
By :
หน้าฮี |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มองในแง่ดี รู้จัก Generic ก็ใช้ได้เหมือนกันนะ
|
|
|
|
|
Date :
2020-05-29 00:23:27 |
By :
หน้าฮี |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|