001.
public
string
ConvertToBathText<T>(T number)
002.
{
003.
Dictionary<
int
,
string
> dic =
new
Dictionary<
int
,
string
>();
004.
dic.Add(1,
"สิบ"
);
005.
dic.Add(2,
"ร้อย"
);
006.
dic.Add(3,
"พัน"
);
007.
dic.Add(4,
"หมื่น"
);
008.
dic.Add(5,
"แสน"
);
009.
dic.Add(6,
"ล้าน"
);
010.
dic.Add(7,
"สิบ"
);
011.
dic.Add(8,
"ร้อย"
);
012.
dic.Add(9,
"พัน"
);
013.
dic.Add(10,
"หมื่น"
);
014.
dic.Add(11,
"แสน"
);
015.
016.
Dictionary<
int
,
string
> dicNum =
new
Dictionary<
int
,
string
>();
017.
dicNum.Add(1,
"หนึ่ง"
);
018.
dicNum.Add(2,
"สอง"
);
019.
dicNum.Add(3,
"สาม"
);
020.
dicNum.Add(4,
"สึ่"
);
021.
dicNum.Add(5,
"ห้า"
);
022.
dicNum.Add(6,
"หก"
);
023.
dicNum.Add(7,
"เจ็ด"
);
024.
dicNum.Add(8,
"แปด"
);
025.
dicNum.Add(9,
"เก้า"
);
026.
027.
028.
string
data1 = System.Text.RegularExpressions.Regex.Match(Convert.ToString(number),@
"\w+(?=\.)?"
).Value;
029.
string
data2 = System.Text.RegularExpressions.Regex.Match(Convert.ToString(number),@
"(?<=\.)\d+"
).Value;
030.
031.
int
nLen = data1.Length;
032.
int
mLen = data2.Length;
033.
034.
StringBuilder sb =
new
StringBuilder();
035.
Func<
int
,
string
> fu = (x) => (from z
in
dic where z.Key == x select z.Value).FirstOrDefault();
036.
037.
Func<
int
,
string
> fuNum = (z) => (from x
in
dicNum where x.Key == z select x.Value).FirstOrDefault();
038.
039.
char
[] cNumber = Convert.ToString(data1).ToCharArray();
040.
char
[] cNumber2 = Convert.ToString(data2).ToCharArray();
041.
042.
043.
foreach
(
char
c
in
cNumber)
044.
{
045.
string
sWord =
string
.Empty;
046.
string
sCount =
string
.Empty;
047.
string
sNumber = Convert.ToString(c);
048.
int
n = Convert.ToInt32(sNumber);
049.
050.
sCount = fu(nLen - 1);
051.
sWord = fuNum(n);
052.
053.
if
(sWord ==
"หนึ่ง"
&&
string
.IsNullOrEmpty(sCount))
054.
{
055.
sWord =
"เอ็ด"
;
056.
}
057.
else
if
(sCount ==
"สิบ"
&& sWord ==
"หนึ่ง"
)
058.
{
059.
sWord =
string
.Empty;
060.
}
061.
else
if
(sWord ==
"สอง"
&& sCount ==
"สิบ"
)
062.
{
063.
sWord =
"ยี่"
;
064.
}
065.
else
if
(
string
.IsNullOrEmpty(sWord))
066.
{
067.
sWord =
string
.Empty;
068.
sCount =
string
.Empty;
069.
}
070.
071.
072.
sb.Append(sWord + sCount);
073.
nLen -= 1;
074.
}
075.
076.
sb.Append(
"บาท"
);
077.
078.
if
(!
string
.IsNullOrEmpty(data2))
079.
{
080.
foreach
(
char
c
in
cNumber2)
081.
{
082.
string
sWord =
string
.Empty;
083.
string
sCount =
string
.Empty;
084.
string
sNumber = Convert.ToString(c);
085.
int
n = Convert.ToInt32(sNumber);
086.
087.
sCount = fu(nLen - 1);
088.
sWord = fuNum(n);
089.
090.
if
(sWord ==
"สอง"
)
091.
{
092.
sWord =
"ยี่สิบ"
;
093.
}
094.
else
095.
{
096.
sWord +=
"สิบ"
;
097.
}
098.
099.
100.
sb.Append(sWord + sCount);
101.
mLen -= 1;
102.
}
103.
104.
sb.Append(
"สตางค์"
);
105.
}
106.
107.
108.
string
value = sb.ToString();
109.
return
value;
110.
}