Code đọc số sang chữ trong lập trình C#?Chào mọi người!. em đang học C#, em có tìm được đoạn code đọc số sang chữ, nhưng đọc vô không hiểu gì hết trơn.
Trang 1Code đọc số sang chữ trong lập trình C#?
Chào mọi người!
em đang học C#, em có tìm được đoạn code đọc số sang chữ, nhưng đọc vô không hiểu gì hết trơn Mọi người giúp em giải thích ý nghĩa của từng đoạn code nha, cảm
ơn nhiều!
PHP Code:
using System;
using System.Collections.Generic;
using System.Text;
namespace VR
{
class Class1
{
private string[] strSo ={ "không", "một", "hai", "ba", "bốn", "n ăm", "sáu", "bảy", "tám", "chín" };
private string[] strDonViNho ={ "linh", "lăm", "mười", "mươi", " mốt", "trăm" };
private string[] strDonViLon ={ "", "ngàn", "triệu", "tỷ" }; private string[] strMainGroup;
private string[] strSubGroup;
private string Len1(string strA)
{
return strSo[int.Parse(strA)];
}
private string Len2(string strA)
{
if (strA.Substring( , 1) == "0")
{
return strDonViNho[ ] + " " + Len1(strA.Substring( , 1))
;
}
else if (strA.Substring( , 1) == "1")
{
if (strA.Substring( , 1) == "5")
{
return strDonViNho[ ] + " " + strDonViNho[ ];
}
else if (strA.Substring( , 1) == "0")
{
return strDonViNho[ ];
}
else
{
return strDonViNho[ ] + " " + Len1(strA.Substring( , 1));
}
}
else
{
if (strA.Substring( , 1) == "5")
{
return Len1(strA.Substring( , 1)) + " " + strDonViNh
o 3] + " " + strDonViNho[ ];
}
Trang 2else if (strA.Substring( , 1) == "0")
{
return Len1(strA.Substring( , 1)) + " " + strDonViNh
o 3];
}
else if (strA.Substring( , 1) == "1")
{
return Len1(strA.Substring( , 1)) + " " + strDonViNh
o 3] + " " + strDonViNho[ ];
}
else
{
return Len1(strA.Substring( , 1)) + " " + strDonViNh
o 3] + " " + Len1(strA.Substring( , 1));
}
}
}
private string Len3(string strA)
{
if ((strA.Substring( , 3) == "000"))
{
return null;
}
else if ((strA.Substring( , 2) == "00"))
{
return Len1(strA.Substring( , 1)) + " " + strDonViNho[ ]
;
}
else
{
return Len1(strA.Substring( , 1)) + " " + strDonViNho[ ] + " " + Len2(strA.Substring( , strA.Length - 1));
}
}
/////////////////////
private string FullLen(string strSend)
{
bool boKTNull = false;
string strKQ ="";
string strA = strSend.Trim();
int iIndex = strA.Length - 9;
int iPreIndex = 0;
if (strSend.Trim() == "")
{
return Len1("0");
}
//tra ve khong neu la khong
for (int i = 0; i < strA.Length; i++)
{
if (strA.Substring( , 1) != "0")
{
break;
}
else if (i == strA.Length - 1)
{
return strSo[ ];
Trang 3}
}
int k = 0;
while (strSend.Trim().Substring( ++, 1) == "0")
{
strA = strA.Remove( , 1);
}
//
if (strA.Length < 9)
{
iPreIndex = strA.Length;
}
//
if ((strA.Length % 9) != 0)
{
strMainGroup = new string[strA.Length / 9 + 1];
}
else
{
strMainGroup = new string[strA.Length / 9];
}
//nguoc
for (int i = strMainGroup.Length - 1; i >= 0; i )
{
if (iIndex >= 0)
{
iPreIndex = iIndex;
strMainGroup[ ] = strA.Substring(iIndex, 9);
iIndex -= 9;
}
else
{
strMainGroup[ ] = strA.Substring( , iPreIndex); }
}
/////////////////////////////////
//tach moi maingroup thanh nhieu subgroup
//xuoi
for (int j = 0; j < strMainGroup.Length; j++)
{
//gan lai gia tri
iIndex = strMainGroup[ ].Length - 3;
if (strMainGroup[ ].Length < 3)
{
iPreIndex = strMainGroup[ ].Length;
}
///
if ((strMainGroup[ ].Length % 3) != 0)
{
strSubGroup = new string[strMainGroup[ ].Length / 3 + 1];
}
else
{
strSubGroup = new string[strMainGroup[ ].Length / 3
;
Trang 4}
for (int i = strSubGroup.Length - 1; i >= 0; i )
{
if (iIndex >= 0)
{
iPreIndex = iIndex;
strSubGroup[ ] = strMainGroup[ ].Substring(iInde
x, 3);
iIndex -= 3;
}
else
{
strSubGroup[ ] = strMainGroup[ ].Substring( , iP reIndex);
}
}
//duyet subgroup de lay string
for (int i = 0; i < strSubGroup.Length; i++)
{
boKTNull = false;//phai de o day
if ((j == strMainGroup.Length - 1) && (i == strSubGr oup.Length - 1))
{
if (strSubGroup[ ].Length < 3)
{
if (strSubGroup[ ].Length == 1)
{
strKQ +=Len1(strSubGroup[ ]);
}
else
{
strKQ += Len2(strSubGroup[ ]);
}
}
else
{
strKQ += Len3(strSubGroup[ ]);
}
}
else
{
if (strSubGroup[ ].Length < 3)
{
if (strSubGroup[ ].Length == 1)
{
strKQ += Len1(strSubGroup[ ]) + " "; }
else
{
strKQ += Len2(strSubGroup[ ]) + " "; }
}
else
{
if (Len3(strSubGroup[ ]) == null)
{
boKTNull = true;
Trang 5}
else
{
strKQ += Len3(strSubGroup[ ]) + " "; }
}
}
//dung
if (!boKTNull)
{
if (strSubGroup.Length - 1 - i != 0)
{
strKQ += strDonViLon[strSubGroup.Length - 1
- i] + " ";
}
else
{
strKQ += strDonViLon[strSubGroup.Length - 1
- i] + " ";
}
}
}
//dung
if (j != strMainGroup.Length - 1)
{
if (!boKTNull)
{
strKQ = strKQ.Substring( , strKQ.Length - 1) + s trDonViLon[ ] + " ";
}
else
{
strKQ = strKQ.Substring( , strKQ.Length - 1) + "
" + strDonViLon[ ] + " ";
}
}
}
//xoa ky tu trang
strKQ = strKQ.Trim();
//xoa dau , neu co
if (strKQ.Substring(strKQ.Length - 1, 1) == ".")
{
strKQ = strKQ.Remove(strKQ.Length - 1, 1);
}
return strKQ;
////////////////////////////////////
}
public string Convert(string strSend, char charInSeparator, stri
ng strOutSeparator)
{
if (strOutSeparator == "")
{
return "Lỗi dấu phân cách đầu ra rỗng";
Trang 6}
if (strSend == "")
{
return Len1("0");
}
string[] strTmp = new string[ ];
try
{
strTmp = strSend.Split(charInSeparator);
string strTmpRight = strTmp[ ];
for (int i = strTmpRight.Length - 1; i >= 0; i )
{
if(strTmpRight.Substring( , )=="0")
{
strTmpRight = strTmpRight.Remove( , );
}
else
{
break;
}
}
if (strTmpRight != "")
{
string strRight = "";
for (int i = 0; i < strTmpRight.Length; i++)
{
strRight += Len1(strTmpRight.Substring( , 1)) +
" ";
}
return FullLen(strTmp[ ]) + " " + strOutSeparator +
" " + strRight.TrimEnd();
}
else
{
return FullLen(strTmp[ ]);
}
}
catch
{
return FullLen(strTmp[ ]);
}
}
}
}