หน้าหลัก » ภาษาซีชาร์ป (C#) » โค้ดภาษา C# แปลงจำนวนเงินจากตัวเลข ให้เป็นตัวหนังสือภาษาไทย

โค้ดภาษา C# แปลงจำนวนเงินจากตัวเลข ให้เป็นตัวหนังสือภาษาไทย




ตัวอย่างโค้ดภาษา C# ในการแปลงจำนวนเงินที่เป็นตัวเลข ให้เป็นตัวหนังสือภาษาไทย ซึ่งโค้ดนี้ได้พัฒนามาจากโค้ด https://www.thaicreate.com/community/c-asp-net-convert-money-number-to-thai-text.html เพื่อแก้ไขข้อผิดพลาดในการแสดงผลให้ถูกต้องยิ่งขึ้นและสามารถรองรับจำนวนเงินสูงสุดถึงล้านล้านบาท อีกทั้งยังสามารถนำไปประยุกต์ใช้ให้สามารถรองรับได้มากกว่าล้านล้านก็ได้

ตัวอย่างโค้ด

/***************************************************
 * Author    : CS Developers
 * Author URI: https://www.comscidev.com
 * Facebook  : https://www.facebook.com/CSDevelopers
 ***************************************************/
 
public string ThaiBahtText(string strNumber, bool IsTrillion = false)
{
    string BahtText = "";
    string strTrillion = "";
    string[] strThaiNumber = { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ" };
    string[] strThaiPos = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
 
    decimal decNumber = 0;
    decimal.TryParse(strNumber, out decNumber);
 
    if (decNumber == 0)
    {
        return "ศูนย์บาทถ้วน";
    }
 
    strNumber = decNumber.ToString("0.00");
    string strInteger = strNumber.Split('.')[0];
    string strSatang = strNumber.Split('.')[1];
 
    if (strInteger.Length > 13)
        throw new Exception("รองรับตัวเลขได้เพียง ล้านล้าน เท่านั้น!");
 
    bool _IsTrillion = strInteger.Length > 7 ;
    if (_IsTrillion)
    {
        strTrillion = strInteger.Substring(0, strInteger.Length - 6);
        BahtText = ThaiBahtText(strTrillion, _IsTrillion);
        strInteger = strInteger.Substring(strTrillion.Length);
    }
 
    int strLength = strInteger.Length;
    for (int i = 0; i < strInteger.Length; i++)
    {
        string number = strInteger.Substring(i, 1);
        if (number != "0")
        {
            if (i == strLength - 1 && number == "1" && strLength != 1)
            {
                BahtText += "เอ็ด";
            }
            else if (i == strLength - 2 && number == "2" && strLength != 1)
            {
                BahtText += "ยี่";
            }
            else if (i != strLength - 2 || number != "1")
            {
                BahtText += strThaiNumber[int.Parse(number)];
            }
 
            BahtText += strThaiPos[(strLength - i) - 1];
        }
    }
 
    if (IsTrillion)
    {
        return BahtText + "ล้าน";
    }
 
    if(strInteger != "0")
    {
        BahtText += "บาท";
    }
 
    if (strSatang == "00")
    {
        BahtText += "ถ้วน";
    }
    else
    {
        strLength = strSatang.Length;
        for (int i = 0; i < strSatang.Length; i++)
        {
            string number = strSatang.Substring(i, 1);
            if (number != "0")
            {
                if (i == strLength - 1 && number == "1" && strSatang[0].ToString() != "0")
                {
                    BahtText += "เอ็ด";
                }
                else if (i == strLength - 2 && number == "2" && strSatang[0].ToString() != "0")
                {
                    BahtText += "ยี่";
                }
                else if (i != strLength - 2 || number != "1")
                {
                    BahtText += strThaiNumber[int.Parse(number)];
                }
 
                BahtText += strThaiPos[(strLength - i) - 1];
            }
        }
 
        BahtText += "สตางค์";
    }
 
    return BahtText;
}

ตัวอย่างการใช้งาน

ThaiBahtText("20050000101"); //สองหมื่นห้าสิบล้านหนึ่งร้อยเอ็ดบาทถ้วน 
ThaiBahtText("52195000.99"); //ห้าสิบสองล้านหนึ่งแสนเก้าหมื่นห้าพันบาทเก้าสิบเก้าสตางค์
ThaiBahtText("5000");        //ห้าพันบาทถ้วน 
ThaiBahtText("0.25");        //ยี่สิบห้าสตางค์

* หากนำโค้ดไปใช้งานแล้วพบข้อผิดพลาด แสดงผลไม่ถูกต้อง สามารถแจ้ง Admin มาที่ Chat ใน facebook ได้เลยนะครับ ทางเราจะได้แก้ไขโค้ดให้ถูกต้อง ขอบคุณครับ




อ้างอิงข้อมูล
www.thaicreate.com