02/10/2018, 00:03
Chuyển đổi số thành chữ tiếng việt bằng VB.NET
Lần trước mình có giới thiệu cho mấy bạn bài chuyển số thành chữ tiếng anh, hôm nay mình trình bày tiếp cách chuyển đổi số thành chữ tiếng việt luôn cho đủ bộ. Trước tiên bạn import thư viện này vào: Imports VB = Microsoft.VisualBasic.Strings ...
Lần trước mình có giới thiệu cho mấy bạn bài chuyển số thành chữ tiếng anh, hôm nay mình trình bày tiếp cách chuyển đổi số thành chữ tiếng việt luôn cho đủ bộ.
Trước tiên bạn import thư viện này vào:
Imports VB = Microsoft.VisualBasic.Strings
Bây giờ ta viết 2 function sau:
Public Shared Function TienBangChu(ByVal sSoTien As String) As String Dim DonVi() As String = {"", "nghìn ", "triệu ", "tỷ ", "nghìn ", "triệu "} Dim so As String Dim chuoi As String = "" Dim temp As String Dim id As Byte Do While (Not sSoTien.Equals("")) If sSoTien.Length <> 0 Then so = getNum(sSoTien) sSoTien = VB.Left(sSoTien, sSoTien.Length - so.Length) temp = setNum(so) so = temp If Not so.Equals("") Then temp = temp + DonVi(id) chuoi = temp + chuoi End If id = id + 1 End If Loop temp = UCase(VB.Left(chuoi, 1)) Return temp & VB.Right(chuoi, Len(chuoi) - 1) End Function
Private Shared Function getNum(ByVal sSoTien As String) As String Dim so As String If sSoTien.Length >= 3 Then so = VB.Right(sSoTien, 3) Else so = VB.Right(sSoTien, sSoTien.Length) End If Return so End Function
Private Shared Function setNum(ByVal sSoTien As String) As String Dim chuoi As String = "" Dim flag0 As Boolean Dim flag1 As Boolean Dim temp As String temp = sSoTien Dim kyso() As String = {"không ", "một ", "hai ", "ba ", "bốn ", "năm ", "sáu ", "bảy ", "tám ", "chín "} 'Xet hang tram If sSoTien.Length = 3 Then If Not (VB.Left(sSoTien, 1) = 0 And VB.Left(VB.Right(sSoTien, 2), 1) = 0 And VB.Right(sSoTien, 1) = 0) Then chuoi = kyso(VB.Left(sSoTien, 1)) + "trăm " End If sSoTien = VB.Right(sSoTien, 2) End If 'Xet hang chuc If sSoTien.Length = 2 Then If VB.Left(sSoTien, 1) = 0 Then If VB.Right(sSoTien, 1) <> 0 Then chuoi = chuoi + "linh " End If flag0 = True Else If VB.Left(sSoTien, 1) = 1 Then chuoi = chuoi + "mười " Else chuoi = chuoi + kyso(VB.Left(sSoTien, 1)) + "mươi " flag1 = True End If End If sSoTien = VB.Right(sSoTien, 1) End If 'Xet hang don vi If VB.Right(sSoTien, 1) <> 0 Then If VB.Left(sSoTien, 1) = 5 And Not flag0 Then If temp.Length = 1 Then chuoi = chuoi + "năm " Else chuoi = chuoi + "lăm " End If Else If VB.Left(sSoTien, 1) = 1 And Not (Not flag1 Or flag0) And chuoi <> "" Then chuoi = chuoi + "mốt " Else chuoi = chuoi + kyso(VB.Left(sSoTien, 1)) + "" End If End If Else End If Return chuoi End Function
Tới đây xem như mọi thứ đã xong, bây giờ bạn thiết kế form như trên, tại nút nhấn ta viết code sau:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click TextBox2.Text = TienBangChu(TextBox1.Text) End Sub
Chúc các bạn thành công!