- [DEVEXPRESS] Chia sẻ source code cách tạo biểu đồ sơ đồ tổ chức công ty Org Chart trên Winform C#
- [C#] Hướng dẫn tạo Auto Number trên Datagridview winform
- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
- [C#] Thiết lập dấu (,) hay dấu (.) ở định dạng số đúng với định dạng số Việt Nam
- [C#] Chia sẻ source code Game Spin Lucky Wheel
- [C#] Hướng dẫn Encode and Decode HTML
- Danh sách tài khoản ChatGPT miễn phí - Hướng dẫn tạo tài khoản Chat Open AI GPT tại Việt Nam
- [C#] Hướng dẫn thay đổi giao diện ứng dụng Winform theo giao diện của Windows
- [VB.NET] Hiệu ứng Acrylic, Mica, Tabbed Blur Effect trên Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên Combobox Edit
- [C#] Chia sẻ source code Orange Rain in Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên XtraMessageBox Winform Devexpress 22.2.3
- [DEVEXPRESS] Hướng dẫn sử dụng HTML and CSS Code Viewer trên Winform
- [C#] Number Effect Counter up and down in winform
- [C#] Hướng dẫn Supend and Resume Process ID in Winform
- [C#] Hiển thị line number trên Richtextbox Winform
- [C#] Fake Blue Screen BSOD in winform
- [C#] Chia sẽ code demo sử dụng Async Parallel Foreach and For in Winform
- [C#] Sử dụng ActionBlock run X task at time winform
- [C#] Hướng dẫn sử dụng Property Grid để lưu và tải lại thông tin cấu hình user trên winform
Chuyển đổi số thành chữ tiếng anh bằng VB.NET
Bài viết này mình sẽ giới thiệu đến các bạn hàm đọc số thành chữ tiếng Anh, tính năng này rất hữu ích đối với những bạn viết các đơn hàng đọc số bằng tiếng Anh gửi sang nước ngoài trong một số các ứng dụng quản lý.
Trước tiên các bạn khai bào các biến sau:
Dim MangChuSo(10) As String
Dim tu_bon As String
Dim StrSo As String
Dim So_Nhom
Dim Stt_Nhom
Dim Stt_So
Dim So_Phu
Dim soCongthem As Double = 0.0000000000001
Sau khi khai báo các biến trên các bạn viết hàm đổi số thành chữ như sau:
Function DOI_SO_CHU_NHOM_ENG(ByVal Nhom_So, ByVal Stt_Nhom, ByVal So_Nhom) As String
Dim Tram, Chuc, Don_Vi, Tram_Chu, Chuc_Chu, Don_Vi_Chu, Nhom_Chu As String
Nhom_Chu = ""
Tram = Microsoft.VisualBasic.Left(Nhom_So, 1)
Chuc = Nhom_So.Substring(1, 1)
Don_Vi = Microsoft.VisualBasic.Right(Nhom_So, 1)
Tram_Chu = MangChuSo(Val(Tram))
Chuc_Chu = MangChuSo(Val(Chuc))
Don_Vi_Chu = MangChuSo(Val(Don_Vi))
If (Tram <> "0") Then
Nhom_Chu = Nhom_Chu + Tram_Chu + " hundred"
End If
Select Case Trim(Chuc_Chu)
Case "and"
If Trim(Don_Vi_Chu) <> " zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "zezo"
If Trim(Don_Vi_Chu) <> " zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "one"
Select Case Trim(Don_Vi_Chu)
Case "one"
Nhom_Chu = Nhom_Chu + " eleven"
Case "two"
Nhom_Chu = Nhom_Chu + " twelve"
Case "three"
Nhom_Chu = Nhom_Chu + " thirteen"
Case "four"
Nhom_Chu = Nhom_Chu + " fourteen"
Case "five"
Nhom_Chu = Nhom_Chu + " fifteen"
Case "zezo"
Nhom_Chu = Nhom_Chu + " ten"
Case Else
Nhom_Chu = Nhom_Chu + " " + Trim(Don_Vi_Chu) + "teen"
End Select
Case "two"
Nhom_Chu = Nhom_Chu + " twenty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "three"
Nhom_Chu = Nhom_Chu + " thirty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "four"
Nhom_Chu = Nhom_Chu + " forty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "five"
Nhom_Chu = Nhom_Chu + " fifty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "six"
Nhom_Chu = Nhom_Chu + " sixty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "seven"
Nhom_Chu = Nhom_Chu + " seventy"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "eight"
Nhom_Chu = Nhom_Chu + " eighty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "nine"
Nhom_Chu = Nhom_Chu + " ninety"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
End Select
If (Tram = "0") And (Chuc = 0) And (Don_Vi <> 0) And (Stt_Nhom > 1) Then
Nhom_Chu = Don_Vi_Chu
End If
If (Tram = 0) And (Chuc = 0) And (Don_Vi <> 0) And (So_Nhom = 1) Then
Nhom_Chu = Don_Vi_Chu
End If
Select Case Stt_Nhom
Case 2
Nhom_Chu = Nhom_Chu + " thousand"
Case 3
Nhom_Chu = Nhom_Chu + " milion"
Case 4
Nhom_Chu = Nhom_Chu + " bilion"
Case 5
Nhom_Chu = Nhom_Chu + " thousand"
Case 6
Nhom_Chu = Nhom_Chu + " milion"
End Select
If (Tram = 0) And (Chuc = 0) And (Don_Vi = 0) Then
Nhom_Chu = ""
End If
Return Nhom_Chu
End Function
Private Function DOI_SO_CHU_ENG(ByVal ps_nSo As Double, ByVal ps_sDVT As String, Optional ByVal ps_bSoBon As Boolean = False) As String
Dim So As Double = ps_nSo
Dim Sosaudauphay As String
So = ps_nSo
tu_bon = " four"
If ps_bSoBon Then
tu_bon = "four"
End If
MangChuSo(0) = " zezo"
MangChuSo(1) = " one"
MangChuSo(2) = " two"
MangChuSo(3) = " three"
MangChuSo(4) = " four"
MangChuSo(5) = " five"
MangChuSo(6) = " six"
MangChuSo(7) = " seven"
MangChuSo(8) = " eight"
MangChuSo(9) = " nine"
Dim SoChu As String = ""
If So < 0 Then
So = -So
SoChu = SoChu + " minus"
End If
Sosaudauphay = So - Int(So)
Sosaudauphay += 0.0000000000001
So = Int(So)
If So = 0 Then
SoChu = SoChu + " zezo 0"
Else
StrSo = Trim(Str(So))
If Len(StrSo) Mod 3 = 1 Then
StrSo = "00" + StrSo
End If
If Len(StrSo) Mod 3 = 2 Then
StrSo = "0" + StrSo
End If
So_Nhom = Len(StrSo) / 3
Stt_Nhom = So_Nhom
Stt_So = 0
Do While Stt_So <= (Len(StrSo) - 2) '&&Cho den vi tri cua chu so dau tien cua nhom cuoi cung
So_Phu = StrSo.Substring(Stt_So, 3)
Stt_Nhom = Math.Round((Len(StrSo) - Stt_So + 1) / 3, 0)
If Len(DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom)) > 0 Then
SoChu = SoChu + DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom) + " and"
Else
SoChu = SoChu + DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom)
End If
Stt_So = Stt_So + 3
Loop
End If
SoChu = Microsoft.VisualBasic.Left(Trim(SoChu), Len(Trim(SoChu))) 'Bangvs - Da sua -> 2013.03.05
If Sosaudauphay > 0 + soCongthem Then
SoChu = SoChu + " dot"
Sosaudauphay = Sosaudauphay.ToString.Substring(2, ps_nSo.ToString.Length - So.ToString.Length - 1) 'Cat lay phan sau dau phay)
If Microsoft.VisualBasic.Left(Sosaudauphay, 1) <> "0" Then
'&&Cat nhung so 0 o ben phai do STR() di
Do While Microsoft.VisualBasic.Right(Sosaudauphay, 1) = "0"
Sosaudauphay = Microsoft.VisualBasic.Left(Sosaudauphay, Len(Sosaudauphay) - 1)
Loop
'&&Cong them cac so khong vao dang truoc chuoi de duoc chan cac to hop 3 so
If Len(Sosaudauphay) Mod 3 = 1 Then
Sosaudauphay = "00" + Sosaudauphay
End If
If Len(Sosaudauphay) Mod 3 = 2 Then
Sosaudauphay = "0" + Sosaudauphay
End If
So_Nhom = Math.Round(Len(Sosaudauphay) / 3, 0)
Stt_Nhom = So_Nhom
Stt_So = 0
Do While Stt_So <= (Len(Sosaudauphay) - 2) '&&Cho den vi tri cua chu so dau tien cua nhom cuoi cung
So_Phu = Sosaudauphay.Substring(Stt_So, 3)
Stt_Nhom = Math.Round((Len(Sosaudauphay) - Stt_So + 1) / 3, 0)
SoChu = SoChu + DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom)
Stt_So = Stt_So + 3
Loop
Else
Do While Microsoft.VisualBasic.Right(Sosaudauphay, 1) = "0"
Sosaudauphay = Microsoft.VisualBasic.Left(Sosaudauphay, Len(Sosaudauphay) - 1)
Loop
Dim i As Integer = 0
Dim j As Integer = 0
For i = 0 To Len(Sosaudauphay) - 1
j = Sosaudauphay.Substring(i, 1)
SoChu = SoChu + MangChuSo(Val(j))
Next
End If
End If
SoChu = Trim((Microsoft.VisualBasic.Left(SoChu, 1)).ToUpper + SoChu.Substring(1) + ps_sDVT) 'Bangvs - Da sua -> 2013.03.05
Return SoChu
End Function
Sau khi có hàm đọc số trên, có thể một số bạn đọc sẽ không hiểu, nhưng thôi kệ cứ thừa nhận vậy. Đến đây xem như mọi thứ đã xong. Bây giờ sử dụng nó như thế nào? Bạn thiết kế nút trên form như trên hình, giờ ta viết code cho nút như sau:
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
Try
Dim Socandoc As Double
If IsNumeric(txtso.Text) Then
Socandoc = CDbl(txtso.Text)
TextBox1.Text = DOI_SO_CHU_ENG(Socandoc, " USD", True)
Else
MsgBox(txtso.Text)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Chúc các bạn thành công!