Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Chuyển chuỗi thành chữ trong lập trình C#

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    43

    Thumbs down Chuyển chuỗi thành chữ trong lập trình C#

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4.  
    5. namespace WindowsApplication1
    6. {
    7.     class int2str
    8.     {
    9.         public void chuyenchuoilon(String mynumber)
    10.     { String text;
    11.  
    12.    if(mynumber / 1000000000 > 0)
    13.         text = fSoThanhChu_Mini(mynumber / 1000000000) + " tỉ "  ;
    14.    
    15.    
    16.     mynumber = mynumber % 1000000000;
    17.     if (mynumber / 1000000 > 0 )
    18.         text = text + fSoThanhChu_Mini(mynumber / 1000000) + " triệu ";
    19.  
    20.  
    21.     mynumber = mynumber % 1000000;
    22.     if (mynumber / 1000 > 0)
    23.         text = text + fSoThanhChu_Mini(mynumber / 1000) + " ngàn ";
    24.    
    25.     text = text + fSoThanhChu_Mini(mynumber)   ;
    26.        
    27.     fSoThanhChu = Ucase(left(Trim(text), 1)) & mid(trim(text), 2) + " đồng";
    28.     if (fSoThanhChu.Substring(0, 3).equals("Một mươi"))
    29.         fSoThanhChu = Replace(fSoThanhChu, "một mươi", "Mười");
    30.     else
    31.         fSoThanhChu = Replace(fSoThanhChu, "một mươi", "mười");
    32.    
    33.         }
    34.  
    35.  
    36.  
    37. public string fSoThanhChu_Mini(int mynumber)
    38.         {
    39.              
    40.     String Text;
    41.     String NumberText[10] = new string[10];
    42.  
    43.     NumberText[1] = "không";
    44.     NumberText[2] = "một";
    45.     NumberText[3] = "hai";
    46.     NumberText[4]= "ba";
    47.     NumberText[5]= "bốn";
    48.     NumberText[6]= "năm";
    49.     NumberText[7] = "sáu";
    50.     NumberText[8] = "bảy";
    51.     NumberText[9] = "tám";
    52.     NumberText[10] = "chín";
    53.     Boolean isLang;
    54.    
    55.     mynumber = mynumber % 1000;
    56.        
    57.     if (mynumber > 99)
    58.         text = text & NumberText(mynumber / 100 + 1) + " trăm "   ;
    59.  
    60.    
    61.     isLang = False;
    62.     mynumber = mynumber % 100
    63.     if (mynumber > 9)
    64.         text = text & NumberText(mynumber / 10 + 1) + " mươi "        
    65.         isLang = True
    66.       else
    67.       {     if( mynumber%10 > 0)
    68.         if (text!="")
    69.             text = text + "lẻ";
    70.        
    71.         }
    72.  
    73.     mynumber = mynumber % 10;
    74.     if (mynumber > 0)
    75.         if (isLang)
    76.             Select Case MyNumber%10
    77.       {    Case 1
    78.                     text = text & "mốt ";
    79.                 Case 5
    80.                     text = text & "lăm ";
    81.                 Case else
    82.                     text = text & NumberText((mynumber Mod 10) + 1);
    83.       }    
    84.        else
    85.             text = text & NumberText((mynumber % 10) + 1);
    86.     }
    87.     }
    88.        
    89.     fSoThanhChu_Mini = Trim(text);
    90.  
    91.         }
    92.     }
    93. }


    Mình đang cần đoạn code để chuyển !!!
    nhưng tìm hết trên mạng toàn thấy viết bằng VB hok à!!!
    Nhìn thuật toán thì thấy hay dễ hiểu nhưng khi bắt đầu edit lại để dùng trong C# thì đúng là cả 1 vấn đề !!
    Trình độ c# mới ở cấp newbie nên hok biết hết được keywords trong C# nên chuyển ko xong!!!
    Sư huynh nào giúp me fix lại hết dùm với!!!
    thanks các huynh trước

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    37

    Chuyển sang C# trong bài của bạn:
    1.div = /, mod = % => cái này chỉ có kiểu int mới dùng đc. (mynumber: int).
    2.Trong VB các keyword thường bắt đầu bằng chữ hoa, C# dùng chữ thường.
    VB: Public, False => C#: public, false;
    3.VB function(parameter), còn C# dùng parameter.function()
    VB: Trim(text) => C#: text.Trim();

    Ngoài lề 1 chút:
    Trong C# mặc dù dùng string/String, double/Double... là giống nhau. Nhưng C# quy ước tên class là phải viết hoa ký tự đầu nên bạn nên dùng string thay cho String ...(phân biệt class với biến).

    Còn về bài chuyển số thành chữ của bạn:
    -Bạn nên chuyển tham số mynumber từ int thành string.
    Kiểu int: range -2,147,483,648 to 2,147,483,647 => đc có 10 ký tự. Còn string thì nhiều lắm.
    -Dùng SubString() để tách string thay cho div mod.

  3. #3
    Ngày gia nhập
    04 2009
    Nơi ở
    Đà Nẵng
    Bài viết
    73

    Code C# của mình nè.
    ***Hàm đọc 3 số thàng chữ
    Visual C# Code:
    1.       public static string read3Number(int num) {
    2.             Dictionary<int,string> doc = new Dictionary<int,string>();
    3.             doc[1] = "Một";
    4.             doc[-1] = "Mốt";
    5.             doc[-10] = "Mười";
    6.             doc[2] = "Hai";
    7.             doc[3] = "Ba";
    8.             doc[4] = "Bốn";
    9.             doc[-5] = "Lăm";
    10.             doc[5] = "Năm";
    11.             doc[6] = "Sáu";
    12.             doc[7] = "Bảy";
    13.             doc[8] = "Tám";
    14.             doc[9] = "Chín";
    15.             doc[0] = "Không";
    16.             int tram = num / 100;
    17.             int chuc = (num % 100) / 10;
    18.             int donvi = num % 10;
    19.             if (donvi == 5) donvi = -5;
    20.             if (chuc == 1) chuc = -10;
    21.             if (donvi == 1) donvi = -1;
    22.             if (tram != 0)
    23.             {
    24.                 if (donvi != 0) return doc[tram] + " Trăm " + doc[chuc] + " Mươi " + doc[donvi];
    25.                 else return doc[tram] + " Trăm " + doc[chuc] + " Mươi";
    26.             }
    27.             else {
    28.                 if (chuc != 0)
    29.                 {
    30.                     if (donvi != 0) return doc[chuc] + " Mươi " + doc[donvi];
    31.                     else return doc[chuc] + " Mươi";
    32.                 }
    33.                 else {
    34.                     if (donvi != 0) return doc[donvi];
    35.                     else return "";
    36.                 }
    37.             }          
    38.            
    39.         }

    *** Hàm chính
    Visual C# Code:
    1.         public static string ReadNumber(long number)
    2.         {
    3.             Dictionary<string, int> dic = new Dictionary<string, int>();
    4.             dic["Tỷ"] = (int)(number / 1000000000);
    5.             dic["Triệu"] = (int)((number % 1000000000) / 1000000);
    6.             dic["Nghìn"] = (int)((number % 1000000) / 1000);
    7.             dic["Đồng"] = (int)(number % 1000);
    8.             if (dic["Tỷ"] != 0)
    9.             {
    10.                 return read3Number(dic["Tỷ"]) + " Tỷ " + read3Number(dic["Triệu"]) + " Triệu " + read3Number(dic["Nghìn"]) + " Nghìn " + read3Number(dic["Đồng"]) + " Đồng";
    11.             }
    12.             else {
    13.                 if (dic["Triệu"] != 0)
    14.                 {
    15.                     return read3Number(dic["Triệu"]) + " Triệu " + read3Number(dic["Nghìn"]) + " Nghìn " + read3Number(dic["Đồng"]) + " Đồng";
    16.                 }
    17.                 else
    18.                 {
    19.                     if (dic["Nghìn"] != 0)
    20.                     {
    21.                         return read3Number(dic["Nghìn"]) + " Nghìn " + read3Number(dic["Đồng"]) + " Đồng";
    22.                     }
    23.                     else {
    24.                         if (dic["Đồng"] != 0)
    25.                         {
    26.                             return read3Number(dic["Đồng"]) + " Đồng";
    27.                         }
    28.                         else return "0 đồng";
    29.                     }
    30.                 }
    31.             }
    32.         }

    P/s: Giới hạn đọc tối đa 999 tỉ (Tức 12 chữ số đó!) thôi nha! Chừng đó là đủ xài rồi các bạn nhỉ hihi... Nếu bạn nào muốn thì mình sẽ nâng cấp thêm. Mọi chi tiết xin liên hệ yahoo: nhatnguyet_1612
    Đã được chỉnh sửa lần cuối bởi nkchicu1612 : 10-12-2011 lúc 04:05 PM. Lý do: Update

  4. #4
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hi. Nếu không tự chuyển được thì bạn có thể dùng Reflector để chuyển. Cái đó có thể chuyển qua chuyển lại giữa các ngôn ngữ .net mà:C#,vb.net,F#.. Nó nhận đầu vào là file exe/Dll. Do đó, Bạn dịch cái file Vb ra DLL rồi dùng cái phần mềm kia. Thế là xong.hehe
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    Đà Nẵng
    Bài viết
    73

    Đoạn code của mình viết bằng C# rùi đó! Chạy ngon ơ rùi còn gì

Các đề tài tương tự

  1. Cách chuyển 1 chuỗi ra phân số trong c#
    Gửi bởi hungvboys trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 23-08-2012, 09:12 AM
  2. Lập trình C chuyển chuỗi trong C->số Hex?
    Gửi bởi nthung trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 19-10-2011, 04:11 PM
  3. Trả lời: 7
    Bài viết cuối: 21-03-2011, 09:59 PM
  4. Chuyển con trỏ chuột trong lập trình C#
    Gửi bởi dotritiep trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 19-10-2010, 03:15 PM
  5. Cách chuyển chuỗi ra số trong MFC 6.0
    Gửi bởi it_2010 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 27-04-2010, 12:21 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn