- [VB.NET] Chia sẻ source code lịch âm dương và hẹn lịch nhắc việc
- [C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
- [VB.NET] Hướng dẫn giải captcha sử dụng dịch vụ AZCaptcha API trên winform
- [C#] Hướng dẫn chứng thực đăng nhập ứng dụng bằng vân tay (Finger Print) trên máy tính
- [C#] Color Thief cách xuất màu sắc thiết kế từ hình ảnh
- [C#] Cách tạo bản quyền và cho phép dùng thử ứng dụng Winform
- [C#] Hướng dẫn sử dụng trình duyệt web Chrome convert HTML sang tập tin file PDF
- [C#] Kết nôi điện thoại Android, IOS với App Winform via Bluetooth
- [DATABASE] Cách query cộng trừ dồn dần trong Sqlserver
- [C#] Thiết kế ứng dụng Console đẹp với thư viện Spectre.Console
- [C#] Thiết kế ứng dụng Single Instance và đưa ứng dụng lên trước nếu kiểm tra ứng dụng đang chạy
- [C#] Giới thiệu JSON Web Token và cách đọc chuỗi token
- [C#] Cách tăng giảm font chữ tất cả các control trên winform
- [DEVEXPRESS] Tích hợp chức năng Tìm kiếm Search vào CheckedComboboxEdit
- [C#] Gởi email Metting Calendar Reminder kèm nhắc thời gian lịch họp
- [C#] Tìm kiếm xem danh sách từ khóa có tồn tại trong đoạn văn bản hay không
- [C#] Thiết kế giao diện ứng dụng trên Console sử dụng thư viện Terminal.Gui
- [C#] Hướng dẫn tạo mã VietQR Payment API Winform
- [C#] Sử dụng thư viện BenchmarkDotNet đo hiệu năng của hảm Method
- [DEVEXPRESS] Tìm kiếm không dấu tô màu highlight có dấu trên C# 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!