C#: Đọc Số Thành Chữ (tiếng Việt) [Code+Project+Video] - VN SEEDER

VN SEEDER

Chắc chắn là có đủ....

Menu
  • Tin học - Lập trình
    • Lập trình căn bản
    • Lập trình đồ họa
    • Cấu trúc dữ liệu & giải thuật
    • C# và SQL Server
    • Thủ thuật máy tính
  • Kiến thức
    • Có thể bạn chưa biết
    • Làm thế nào
    • Nuôi dạy con
    • Sức khỏe
  • Đọc
    • Hạt giống tâm hồn
    • Truyện cổ tích
    • Truyện cười
    • Truyện ngụ ngôn
    • Tony buổi sáng
    • Phật học
  • Ebook
    • English Ebook
    • Vietnamese Ebook
Trang chủ >> C# và SQL Server >> CSharp >> C#: Đọc số thành chữ (tiếng Việt) [Code+Project+Video] C#: Đọc số thành chữ (tiếng Việt) [Code+Project+Video] Từ khóa C# và SQL Server CSharp

Đọc số thành chữ (tiếng Việt) là một thuật toán không khó nên hầu hết những ai biết lập trình đều có thể tự viết được.100% các phần mềm quản lý có liên quan đến tiền bạc thì phải có thuật toán đọc số thành chữ (tiếng Việt) bên trong nó để khi xuất ra các hóa đơn, phiếu thu/chi, người dùng có thể thấy được số tiền bằng chữ.Bây giờ, mình chia sẻ cho các bạn 2 thuật toán code C# đổi số thành chữ. 1 đoạn code dài, 1 đoạn code ngắn để bạn có thể so sánh, đánh giá.Đoạn Code 1: public static class ReadNumber { private static int Cấp_Tỉ { get; set; } private static string t { get; set; } public static string ByWords(this decimal so) { string str = so.ToString("########################0"); string str1 = ""; try { if (str != "") { str1 = (!(so == new decimal(0)) ? ReadNumber.Đọc_Số(ReadNumber.Tạo_Mảng_Số(str)) : "không"); } } catch (Exception exception1) { try { str1 = ReadNumber.Đọc_Số(ReadNumber.Tạo_Mảng_Số(str)); } catch (Exception exception) { str1 = "Tò te tí te ,số máy quí khách vừa gọi không có thật, xin vui lòng gọi lại số khác :D"; } } return ReadNumber.Viethoa(str1); } private static string Chục(string chuc) { string str = ""; char chr = chuc[1]; int num = Convert.ToInt32(chr.ToString()); int num1 = Convert.ToInt32(chuc); if (num1 < 20) { if (num1 == 10) { str = "mười"; } else if (num1 == 11) { str = "mười một"; } else if (num1 != 15) { chr = chuc[1]; str = string.Concat("mười ", ReadNumber.Đơn_Vị(chr.ToString())); } else { str = "mười lăm"; } } else if (num == 1) { chr = chuc[0]; str = string.Concat(ReadNumber.Đơn_Vị(chr.ToString()), " mươi mốt"); } else if (num == 5) { chr = chuc[0]; str = string.Concat(ReadNumber.Đơn_Vị(chr.ToString()), " mươi lăm"); } else if (num != 0) { chr = chuc[0]; string str1 = ReadNumber.Đơn_Vị(chr.ToString()); chr = chuc[1]; str = string.Format("{0} mươi {1}", str1, ReadNumber.Đơn_Vị(chr.ToString())); } else { chr = chuc[0]; str = string.Concat(ReadNumber.Đơn_Vị(chr.ToString()), " mươi "); } if (chuc[0].ToString() == "0") { str = str.Replace(" mươi ", ""); str = str.Replace("mười ", ""); } return str; } private static string Đọc_Số(string[] arr) { string str = ""; string str1 = str; string str2 = str; string str3 = str; string str4 = str; string str5 = str; string str6 = str; string str7 = str; int length = (int)arr.Length; while (length > 0) { if ((ReadNumber.Cấp_Tỉ <= 0 ? false : length < (int)arr.Length)) { str3 = string.Concat(str3, " tỉ "); } string[] strArrays = arr[length - 1].Split(new char[] { ',' }); string str8 = ReadNumber.Trăm(strArrays[0].ToString()); switch ((int)strArrays.Length) { case 1: { str6 = string.Concat(str8, str3); break; } case 2: { str5 = string.Format("{0} nghìn {1}{2}", str8, ReadNumber.Trăm(strArrays[1].ToString()), str3); break; } case 3: { int num = Convert.ToInt32(strArrays[0]); str2 = str8; if (num <= 0) { str2 = str8; } else { str2 = (num >= 100 ? string.Concat(str2, " triệu ") : string.Concat(str2.Replace(" lẻ ", ""), " triệu ")); } str1 = ReadNumber.Trăm(strArrays[1]); if (Convert.ToInt32(strArrays[1]) > 0) { str1 = string.Concat(str1, " nghìn "); } str4 = string.Concat(str2, str1, ReadNumber.Trăm(strArrays[2]), str3); break; } } length--; str7 = string.Concat(str6, str5, str4, str7); string str9 = ""; str4 = str9; str5 = str9; str6 = str9; str1 = str9; str2 = str9; } ReadNumber.Cấp_Tỉ = 0; return str7; } private static string Đơn_Vị(string dv) { string str = ""; string str1 = dv; if (str1 != null) { switch (str1) { case "0": { str = ""; break; } case "1": { str = "một"; break; } case "2": { str = "hai"; break; } case "3": { str = "ba"; break; } case "4": { str = "bốn"; break; } case "5": { str = "năm"; break; } case "6": { str = "sáu"; break; } case "7": { str = "bảy"; break; } case "8": { str = "tám"; break; } case "9": { str = "chín"; break; } } } return str; } private static string[] Tạo_Mảng_Số(string nghin) { char chr; bool str; try { nghin = Convert.ToInt32(nghin).ToString(); } catch (Exception exception) { } int num = 0; int num1 = num; int num2 = num; int num3 = num; int num4 = num; int length = nghin.Length; num2 = (length % 3 != 0 ? length + length / 3 : length + length / 3 - 1); string[] strArrays = new string[num2]; num2--; while (length > 0) { if (num4 == 3) { num4 = 1; num3++; if (num3 != 3) { strArrays[num2 - num1] = ","; } else { num3 = 0; ReadNumber.Cấp_Tỉ = ReadNumber.Cấp_Tỉ + 1; strArrays[num2 - num1] = "_"; } num1++; chr = nghin[length - 1]; strArrays[num2 - num1] = chr.ToString(); } else { num4++; if (nghin[length - 1].ToString() == " ") { str = true; } else { chr = nghin[length - 1]; str = !(chr.ToString() != "\n"); } if (!str) { chr = nghin[length - 1]; strArrays[num2 - num1] = chr.ToString(); } } num1++; length--; } ReadNumber.t = string.Join("", strArrays); return string.Join("", strArrays).Split(new char[] { '\u005F' }); } private static string Trăm(string tram) { char chr; string str = ""; int num = Convert.ToInt32(tram); if (num == 0) { str = ""; } else if (tram.Length == 1) { str = ReadNumber.Đơn_Vị(tram); } else if (tram.Length == 2) { str = ReadNumber.Chục(tram); } else if (num % 100 == 0) { chr = tram[0]; str = string.Concat(ReadNumber.Đơn_Vị(chr.ToString()), " trăm"); } else if (num < 100) { str = string.Concat("lẻ ", ReadNumber.Chục(tram.Substring(1).ToString())); } else if (!(tram[1].ToString() != "0")) { chr = tram[0]; string str1 = ReadNumber.Đơn_Vị(chr.ToString()); chr = tram[2]; str = string.Format("{0} trăm lẻ {1}", str1, ReadNumber.Đơn_Vị(chr.ToString())); } else { chr = tram[0]; str = string.Format("{0} trăm {1}", ReadNumber.Đơn_Vị(chr.ToString()), ReadNumber.Chục(tram.Substring(1).ToString())); } return str; } private static string Viethoa(string str) { string str1; if (!str.IsNullOrEmpty()) { char[] charArray = str.ToCharArray(); charArray[0] = char.ToUpper(charArray[0]); str1 = new string(charArray); } else { str1 = str; } return str1; } }Đoạn Code 2: public class Number2Text { [DebuggerNonUserCode] public Number2Text() { } private static string getNum(string sSoTien) { string str; str = (sSoTien.Length < 3 ? Strings.Right(sSoTien, sSoTien.Length) : Strings.Right(sSoTien, 3)); return str; } public static string Num2Text(string sSoTien) { byte num = 0; string str; string str1; string[] strArrays = Strings.Split(sSoTien, ".", -1, CompareMethod.Binary); sSoTien = strArrays[0]; string[] strArrays1 = new string[] { "", "nghìn ", "triệu ", "tỷ ", "ngàn ", "triệu " }; string[] strArrays2 = strArrays1; string str2 = ""; while (!sSoTien.Equals("")) { if (sSoTien.Length != 0) { string num1 = Number2Text.getNum(sSoTien); sSoTien = Strings.Left(sSoTien, checked(sSoTien.Length - num1.Length)); str1 = Number2Text.setNum(num1); num1 = str1; if (!num1.Equals("")) { str1 = string.Concat(str1, strArrays2[num]); str2 = string.Concat(str1, str2); } num = checked((byte)(checked(num + 1))); } } str1 = Strings.UCase(Strings.Left(str2, 1)); try { str = string.Concat(str1, Strings.Right(str2, checked(Strings.Len(str2) - 1)), "đồng./."); } catch (Exception exception) { ProjectData.SetProjectError(exception); str = ""; ProjectData.ClearProjectError(); } return str; } private static string setNum(string sSoTien) { bool flag = false; bool flag1 = false; string str = ""; string str1 = sSoTien; string[] strArrays = new string[] { "không ", "một ", "hai ", "ba ", "bốn ", "năm ", "sáu ", "bảy ", "tám ", "chín " }; string[] strArrays1 = strArrays; if (sSoTien.Length == 3) { if (Conversions.ToDouble(Strings.Left(sSoTien, 1)) == 0 & Conversions.ToDouble(Strings.Left(Strings.Right(sSoTien, 2), 1)) == 0 & Conversions.ToDouble(Strings.Right(sSoTien, 1)) == 0) { str = string.Concat(strArrays1[Conversions.ToInteger(Strings.Left(sSoTien, 1))], "trăm "); } sSoTien = Strings.Right(sSoTien, 2); } if (sSoTien.Length == 2) { if (Conversions.ToDouble(Strings.Left(sSoTien, 1)) == 0) { if (Conversions.ToDouble(Strings.Right(sSoTien, 1)) != 0) { str = string.Concat(str, "lẻ "); } flag = true; } else if (Conversions.ToDouble(Strings.Left(sSoTien, 1)) != 1) { str = string.Concat(str, strArrays1[Conversions.ToInteger(Strings.Left(sSoTien, 1))], "mươi "); flag1 = true; } else { str = string.Concat(str, "mười "); } sSoTien = Strings.Right(sSoTien, 1); } if (Conversions.ToDouble(Strings.Right(sSoTien, 1)) != 0) { if (!(Conversions.ToDouble(Strings.Left(sSoTien, 1)) == 5 & !flag)) { str = (!(Conversions.ToDouble(Strings.Left(sSoTien, 1)) == 1 & !(!flag1 | flag) & Operators.CompareString(str, "", false) != 0) ? string.Concat(str, strArrays1[Conversions.ToInteger(Strings.Left(sSoTien, 1))], "") : string.Concat(str, "mốt ")); } else { str = (str1.Length != 1 ? string.Concat(str, "lăm ") : string.Concat(str, "năm ")); } } return str; } }Hướng dẫn sử dụng:Tải Project: Code: Download Pass: vhlong.blogspot.com

Bài liên quan

Bài liên quan

>

Thể loại

Cổ tích Có thể bạn chưa biết Nuôi - Dạy con TonyBuổi Sáng-TnBS Sức khỏe Máy tính Lập trình căn bản Làm thế nào Ngẫm Cấu trúc dữ liệu và giải thuật Hạt giống tâm hồn C# và SQL Server Phật học Truyện ngụ ngôn Giáo dục

Ebook Tiếng Anh

CSharp Facebook SEO Windows

Bài xem nhiều

  • Lập trình căn bản C: Tìm ước chung lớn nhất, bội chung nhỏ nhất của 2 số a, b
  • Lập trình căn bản C: Rút gọn phân số
  • Lập trình căn bản C: Xét trúng tuyển thi đại học
  • Những lần xê dịch
  • Lập trình căn bản C: In ra n số nguyên tố đầu tiên
  • Chuyện tiền chuyện bạc (phần 2)
  • Lập trình căn bản C: in tam giác số đối đỉnh
  • Lập trình căn bản C: tìm số m lớn nhất sao cho tổng từ một đến m nhỏ hơn bằng n
  • Làm Menu lựa chọn bằng mũi tên di chuyển lên xuống C/C++
  • Đảo ngược số nguyên dương bằng cách sử dụng đệ quy (có trả về kết quả)
top

Từ khóa » đọc Số Thành Chữ C#