ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 857|ตอบกลับ: 4

[แบ่งปัน] function แปลงตัวเลขให้เป็นตัวอักษร

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    สู้
    2019-10-24 09:28
  • เช็คชื่อแล้ว: 92 วัน

    [LV.6]JuniorII

    24

    กระทู้

    119

    โพสต์

    447

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    447
    Ticket
    224
    จิตพิสัย
    223
    ก่อนอื่นต้องขอออกตัวก่อนว่าไม่ได้เก่ง Vb.netfunction นี้ผมได้เขียนไว้ใช้งานบน dos ด้วยภาษาอื่นนานมาแล้วนำมาดัดแปลงเป็น Vb.net ชื่อและค่าตัวแปรอาจดูสับสน(ตั้งแบบมั่วๆ) ผมไม่ได้เป็น Programmer แค่มีความสนใจ


    เลยนำมาแบ่งปันให้ เผื่อจะเป็นประโยชน์กับผู้ที่สนใจหรือนำไปพัฒนาให้ดีขึ้นกว่านี้ครับ



    1. Public Class ThaiBaht
    2.     Friend Shared Function THBaht(ByVal amount As Double) As String
    3.         If amount = 0 Then Return ""
    4.         Dim strThai1 As String = ""
    5.         Dim strThai2 As String = ""
    6.         Dim strThai011 As String = ""
    7.         Dim strThai021 As String = ""
    8.         Dim strMt As String = ""
    9.         Dim strMtt As String = ""
    10.         Dim bolNegative As Boolean = False
    11.         If amount < 0 Then
    12.             amount = Math.Abs(amount)
    13.             bolNegative = True
    14.         End If

    15.         Dim intDot As Integer = (amount - Math.Truncate(amount)) * 100
    16.         strThai2 = If(intDot > 0, CStr(intDot), "")
    17.         strThai2 = If(strThai2.Length > 2, strThai2.Substring(0, 2), strThai2)

    18.         strThai1 = CStr(Math.Truncate(amount))
    19.         Dim intm1 = strThai1.Length
    20.         If intm1 > 15 Then Return ""  'จำนวนเต็มอย่าเกิน 15 หลัก

    21.         If intm1 > 7 Then
    22.             strMtt = strThai1
    23. Looper:
    24.             strThai011 = Right(strMtt, 6)
    25.             strThai021 = Left(strMtt, strMtt.Length - 6)
    26.             strMt &= ThaiRead(strThai011)

    27.             If strThai021.Length > 7 Then
    28.                 strMtt = strThai021
    29.                 'strMt = strMt & IIf(strMt = "", "", "ล้านล้าน")

    30.                 Dim strMillion As String = ""
    31.                 For mm = 0 To Math.Truncate(strThai021.Length / 7)
    32.                     strMillion &= "ล้าน"
    33.                 Next
    34.                 strMt &= IIf(strMt = "", "", strMillion)

    35.                 GoTo Looper
    36.             Else
    37.                 strMt = ThaiRead(strThai021) & "ล้าน" & strMt
    38.             End If
    39.             strThai1 = strMt
    40.         Else
    41.             strThai1 = strThai021 & ThaiRead(strThai1)
    42.         End If

    43.         strThai2 = ThaiRead(strThai2)
    44.         strThai2 = If(strThai1 <> "", If(strThai1 <> "" AndAlso strThai2 = "", strThai1 & "บาทถ้วน", strThai1 & "บาท"), "") & If(strThai2 <> "", strThai2 & "สตางค์", "")
    45.         Return If(bolNegative, "-" & strThai2, strThai2)
    46.     End Function


    47.     Shared Function ThaiRead(ByVal numberic As String) As String
    48.         If Val(numberic) = 0 Then Return ""

    49.         Dim strText1 As String = String.Empty
    50.         Dim strText2 As String = String.Empty
    51.         Dim strAmount As String = Trim(numberic)
    52.         Dim intT1 As Integer, intT2 As Integer
    53.         Dim varThai = {{"", ""}, {"หนึ่ง", "สิบ"}, {"สอง", "ร้อย"}, {"สาม", "พัน"}, {"สี่", "หมื่น"},
    54.             {"ห้า", "แสน"}, {"หก", "ล้าน"}, {"เจ็ด", ""}, {"แปด", ""}, {"เก้า", ""}}

    55.         intT1 = strAmount.Length
    56.         Try
    57.             For intT2 = 1 To intT1
    58.                 strText2 = Mid(strAmount, intT2, 1)
    59.                 If strText2 <> "0" Then
    60.                     Select Case (intT1 + 1) - intT2
    61.                         Case 1
    62.                             If strText2 = "1" AndAlso intT1 > 1 Then
    63.                                 strText1 &= "เอ็ด"
    64.                             Else
    65.                                 strText1 &= varThai(CInt(strText2), 0) & varThai(intT1 - intT2, 1)
    66.                             End If
    67.                         Case 2
    68.                             Select Case strText2
    69.                                 Case "1"
    70.                                     strText1 &= varThai(1, 1)
    71.                                 Case "2"
    72.                                     strText1 &= "ยี่" & varThai(1, 1)
    73.                                 Case Else
    74.                                     strText1 &= varThai(CInt(strText2), 0) & varThai(intT1 - intT2, 1)
    75.                             End Select
    76.                         Case Else
    77.                             strText1 &= varThai(CInt(strText2), 0) & varThai(intT1 - intT2, 1)
    78.                     End Select
    79.                 End If
    80.             Next
    81.             Return strText1
    82.         Catch ex As Exception
    83.             MsgBox(ex.Message, MsgBoxStyle.Critical, "เกิดข้อผิดพลาด!")
    84.             Err.Clear()
    85.             Return ""
    86.         End Try
    87.     End Function
    88. End Class
    คัดลอกไปที่คลิปบอร์ด


    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x

    คะแนน

    จำนวนผู้เข้าร่วม 1จิตพิสัย +10 ย่อ เหตุผล
    vbpossible + 10 ถูกใจ

    ดูบันทึกคะแนน

  • อารมณ์วันนี้
    สู้
    2020-3-3 10:06
  • เช็คชื่อแล้ว: 98 วัน

    [LV.6]JuniorII

    2

    กระทู้

    147

    โพสต์

    115

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    115
    Ticket
    11
    จิตพิสัย
    104
    sack โพสต์ 2019-4-5 08:06:02 | ดูโพสต์ทั้งหมด
    ขอวิธีนำไปใช้สำหรับมือใหม่หน่อยสิครับ ขอบคุณครับ
  • อารมณ์วันนี้
    สู้
    2019-10-24 09:28
  • เช็คชื่อแล้ว: 92 วัน

    [LV.6]JuniorII

    24

    กระทู้

    119

    โพสต์

    447

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    447
    Ticket
    224
    จิตพิสัย
    223
     เจ้าของ| MisterPee โพสต์ 2019-4-6 23:35:37 | ดูโพสต์ทั้งหมด
    ตามตัวอย่างผมทำไว้เป็น Class ก็สามารถเรียกผ่านจาก Class
    เช่น ThaiBaht.THBaht(145.25)
    หรือจะนำไปเก็บลงตัวแปร
    dim s as string = ThaiBaht.THBaht(145.25)
    จะนำเอาไปเป็นทำเป็น Funtion ก็ไว้ใน Class หรือ Module นั้นๆ ก็เรียกใช้ชื่อ Fuction เท่านั้นครับ
    เช่น THBaht(789) เป็นต้นครับ
  • อารมณ์วันนี้
    แฮปปี้
    2019-4-11 14:45
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    0

    กระทู้

    20

    โพสต์

    2

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    2
    Ticket
    2
    จิตพิสัย
    0
    dogee โพสต์ 2019-4-11 14:54:42 | ดูโพสต์ทั้งหมด
    ดีครับ
  • อารมณ์วันนี้
    แฮปปี้
    2020-4-20 15:58
  • เช็คชื่อแล้ว: 95 วัน

    [LV.6]JuniorII

    3

    กระทู้

    138

    โพสต์

    173

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    173
    Ticket
    55
    จิตพิสัย
    118
    jaricha5 โพสต์ 2019-5-18 13:18:23 | ดูโพสต์ทั้งหมด
    เฟมือนกันครับ ขอวิธีนำไปใช้สำหรับมือใหม่หน่อยสิครับ ขอบคุณครับ
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2020-5-31 15:02 , Processed in 0.058006 second(s), 28 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้