JavaScript:ฟังก์ชั่นแปลงจำนวนเงินที่เป็นตัวเลขให้เป็นคำอ่าน
function ThaiBaht(Number)
{
//ตัดสิ่งที่ไม่ต้องการทิ้งลงโถส้วม
for (var i = 0; i < Number.length; i++)
{
Number = Number.replace (",", ""); //ไม่ต้องการเครื่องหมายคอมมาร์
Number = Number.replace (" ", ""); //ไม่ต้องการช่องว่าง
Number = Number.replace ("บาท", ""); //ไม่ต้องการตัวหนังสือ บาท
Number = Number.replace ("฿", ""); //ไม่ต้องการสัญลักษณ์สกุลเงินบาท
}
//สร้างอะเรย์เก็บค่าที่ต้องการใช้เอาไว้
var TxtNumArr = new Array ("ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ");
var TxtDigitArr = new Array ("", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน");
var BahtText = "";
//ตรวจสอบดูซะหน่อยว่าใช่ตัวเลขที่ถูกต้องหรือเปล่า ด้วย isNaN == true ถ้าเป็นข้อความ == false ถ้าเป็นตัวเลข
if (isNaN(Number))
{
return "ข้อมูลนำเข้าไม่ถูกต้อง";
} else
{
//ตรวสอบอีกสักครั้งว่าตัวเลขมากเกินความต้องการหรือเปล่า
if ((Number - 0) > 9999999.9999)
{
return "ข้อมูลนำเข้าเกินขอบเขตที่ตั้งไว้";
} else
{
//พรากทศนิยม กับจำนวนเต็มออกจากกัน (บาปหรือเปล่าหนอเรา พรากคู่เขา)
Number = Number.split (".");
//ขั้นตอนต่อไปนี้เป็นการประมวลผลดูกันเอาเองครับ แบบว่าขี้เกียจจะจิ้มดีดแล้ว อิอิอิ
if (Number[1].length > 0)
{
Number[1] = Number[1].substring(0, 2);
}
var NumberLen = Number[0].length - 0;
for(var i = 0; i < NumberLen; i++)
{
var tmp = Number[0].substring(i, i + 1) - 0;
if (tmp != 0)
{
if ((i == (NumberLen - 1)) && (tmp == 1))
{
BahtText += "เอ็ด";
} else
if ((i == (NumberLen - 2)) && (tmp == 2))
{
BahtText += "ยี่";
} else
if ((i == (NumberLen - 2)) && (tmp == 1))
{
BahtText += "";
} else
{
BahtText += TxtNumArr[tmp];
}
BahtText += TxtDigitArr[NumberLen - i - 1];
}
}
BahtText += "บาท";
if ((Number[1] == "0") || (Number[1] == "00"))
{
BahtText += "ถ้วน";
} else
{
DecimalLen = Number[1].length - 0;
for (var i = 0; i < DecimalLen; i++)
{
var tmp = Number[1].substring(i, i + 1) - 0;
if (tmp != 0)
{
if ((i == (DecimalLen - 1)) && (tmp == 1))
{
BahtText += "เอ็ด";
} else
if ((i == (DecimalLen - 2)) && (tmp == 2))
{
BahtText += "ยี่";
} else
if ((i == (DecimalLen - 2)) && (tmp == 1))
{
BahtText += "";
} else
{
BahtText += TxtNumArr[tmp];
}
BahtText += TxtDigitArr[DecimalLen - i - 1];
}
}
BahtText += "สตางค์";
}
return BahtText;
}
}
}
credit : thaicreate.com
sss
Free Corner: Convert BahtText, function Bahttext, javascript, Programming, แปลงตัวเลขให้เป็นคำอ่าน
Number = Number.toString(); << เพิ่มฟังก์ชั่นแปลงสตริง toString() นี้ก่อนหน้า split() ด้วย
Number = Number.split (".");
// ขาด การแปลง number > string (ไม่งั้น error ไม่ออก. นั่งแกะอยู่หลาย ชม. อิอิ)
ขอบคุณค่ะ ^^
เพิ่มให้รองรับมากกว่าหลักล้าน
function ThaiBaht(Number)
{
//ตัดสิ่งที่ไม่ต้องการทิ้งลงโถส้วม
for (var i = 0; i < Number.length; i++)
{
Number = Number.replace (",", ""); //ไม่ต้องการเครื่องหมายคอมมาร์
Number = Number.replace (" ", ""); //ไม่ต้องการช่องว่าง
Number = Number.replace ("บาท", ""); //ไม่ต้องการตัวหนังสือ บาท
Number = Number.replace ("฿", ""); //ไม่ต้องการสัญลักษณ์สกุลเงินบาท
}
//สร้างอะเรย์เก็บค่าที่ต้องการใช้เอาไว้
var TxtNumArr = new Array ("ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ");
var TxtDigitArr = new Array ("", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน");
var BahtText = "";
//ตรวจสอบดูซะหน่อยว่าใช่ตัวเลขที่ถูกต้องหรือเปล่า ด้วย isNaN == true ถ้าเป็นข้อความ == false ถ้าเป็นตัวเลข
if (isNaN(Number))
{
return "ข้อมูลนำเข้าไม่ถูกต้อง";
} else
{
//ตรวสอบอีกสักครั้งว่าตัวเลขมากเกินความต้องการหรือเปล่า
if ((Number - 0) > 99999999.9999)
{
return "ข้อมูลนำเข้าเกินขอบเขตที่ตั้งไว้";
} else
{
//พรากทศนิยม กับจำนวนเต็มออกจากกัน (บาปหรือเปล่าหนอเรา พรากคู่เขา)
Number = Number.split (".");
//ขั้นตอนต่อไปนี้เป็นการประมวลผลดูกันเอาเองครับ แบบว่าขี้เกียจจะจิ้มดีดแล้ว อิอิอิ
if (Number[1].length > 0)
{
Number[1] = Number[1].substring(0, 2);
}
var NumberLen = Number[0].length - 0;
var oldTmp = 0;
for(var i = 0; i < NumberLen; i++)
{
var tmp = Number[0].substring(i, i + 1) - 0;
if (tmp != 0)
{
if ((i == (NumberLen - 1) || i == (NumberLen - 7)) && (tmp == 1) && oldTmp != 0)
{
BahtText += "เอ็ด";
} else
if (((i == (NumberLen - 2)) && (tmp == 2)) || ((i == (NumberLen - 8)) && (tmp == 2)))
{
BahtText += "ยี่";
} else
if (((i == (NumberLen - 2)) && (tmp == 1)) || ((i == (NumberLen - 8)) && (tmp == 1)))
{
BahtText += "";
} else
{
BahtText += TxtNumArr[tmp];
}
BahtText += TxtDigitArr[NumberLen - i - 1];
} else if ((i == (NumberLen - 7)) && (tmp == 0)) {
BahtText += TxtDigitArr[NumberLen - i - 1];
}
oldTmp = tmp;
}
BahtText += "บาท";
oldTmp = 0;
if ((Number[1] == "0") || (Number[1] == "00"))
{
BahtText += "ถ้วน";
} else
{
DecimalLen = Number[1].length - 0;
for (var i = 0; i < DecimalLen; i++)
{
var tmp = Number[1].substring(i, i + 1) - 0;
if (tmp != 0)
{
if ((i == (DecimalLen - 1)) && (tmp == 1) && oldTmp != 0)
{
BahtText += "เอ็ด";
} else
if ((i == (DecimalLen - 2)) && (tmp == 2))
{
BahtText += "ยี่";
} else
if ((i == (DecimalLen - 2)) && (tmp == 1))
{
BahtText += "";
} else
{
BahtText += TxtNumArr[tmp];
}
BahtText += TxtDigitArr[DecimalLen - i - 1];
}
oldTmp = tmp;
}
BahtText += "สตางค์";
}
return BahtText;
}
}
}
มีการปรับแต่งตรงเรื่องจุดทศนิย ถ้าไม่ระบุ จะแสดงอักษรได้ครับ
function ThaiBaht(Number)
{
var Num2=Number;
//ตัดสิ่งที่ไม่ต้องการทิ้งลงโถส้วม
for (var i = 0; i < Number.length; i++)
{
Num2 = Num2.replace (",", ""); //ไม่ต้องการเครื่องหมายคอมมาร์
Num2 = Num2.replace (" ", ""); //ไม่ต้องการช่องว่าง
Num2 = Num2.replace ("บาท", ""); //ไม่ต้องการตัวหนังสือ บาท
Num2 = Num2.replace ("฿", ""); //ไม่ต้องการสัญลักษณ์สกุลเงินบาท
}
//สร้างอะเรย์เก็บค่าที่ต้องการใช้เอาไว้
var TxtNumArr = new Array ("ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ");
var TxtDigitArr = new Array ("", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน");
var BahtText = "";
if(Num2.indexOf(".")<0){ /// ค้นหา . ในจำนวน Number ถ้าไม่มีทศนิยมมให้ เพิ่มเข้าไป ///
Num2 +=".00";
}
var num_use = Num2.split (".");
if (num_use[1].length > 0)
{
num_use[1] = num_use[1].substring(0, 2);
}
var NumberLen = num_use[0].length - 0;
for(var i = 0; i < NumberLen; i++)
{
var tmp = num_use[0].substring(i, i + 1) - 0;
var tmp_next = num_use[0].substring(1, i + 1) - 0;
if (tmp != 0)
{
if ((i == (NumberLen - 1)) && (tmp == 1))
{
console.log(tmp_next);
if(tmp_next>0 ) BahtText += "เอ็ด";
else BahtText += "หนึ่ง";
} else
if ((i == (NumberLen - 2)) && (tmp == 2))
{
BahtText += "ยี่";
} else
if ((i == (NumberLen - 2)) && (tmp == 1))
{
BahtText += "";
} else
{
BahtText += TxtNumArr[tmp];
}
BahtText += TxtDigitArr[NumberLen - i - 1];
}
}
BahtText += "บาท";
if ((num_use[1] == "0") || (num_use[1] == "00"))
{
BahtText += "ถ้วน";
} else
{
DecimalLen = num_use[1].length - 0;
for (var i = 0; i < DecimalLen; i++)
{
var tmp = num_use[1].substring(i, i + 1) - 0;
if (tmp != 0)
{
if ((i == (DecimalLen - 1)) && (tmp == 1))
{
BahtText += "เอ็ด";
} else
if ((i == (DecimalLen - 2)) && (tmp == 2))
{
BahtText += "ยี่";
} else
if ((i == (DecimalLen - 2)) && (tmp == 1))
{
BahtText += "";
} else
{
BahtText += TxtNumArr[tmp];
}
BahtText += TxtDigitArr[DecimalLen - i - 1];
}
}
BahtText += "สตางค์";
}
return BahtText;
//console.log(BahtText);
//}
// }
}
ปรับ format กับชือตัวแปรครับ
thaiBaht: function (no) {
no = no.toString().replace(/\,/g, '').replace(/ /g, '');
var nums = new Array('ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ');
var digits = new Array('', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน');
var result = '';
if (no.indexOf('.') < 0)
no += '.00';
no = no.split('.');
if (no[1].length > 0)
no[1] = no[1].substring(0, 2);
let len = no[0].length;
for (let v = 0; v < len; v++) {
const vTmp = parseInt(no[0].substring(v, v + 1));
const vTmpNext = parseInt(no[0].substring(1, v + 1));
if (vTmp !== 0) {
if ((v === (len - 1)) && (vTmp === 1))
if (vTmpNext > 0)
result += 'เอ็ด';
else
result += 'หนึ่ง';
else
if ((v === (len - 2)) && (vTmp === 2))
result += 'ยี่';
else
if ((v === (len - 2)) && (vTmp === 1))
result += '';
else
result += nums[vTmp];
result += digits[len - v - 1];
}
}
result += 'บาท';
if ((no[1] === '0') || (no[1] === '00'))
return result += 'ถ้วน';
const decLen = no[1].length;
for (let i = 0; i < decLen; i++) {
const tmp = parseInt(no[1].substring(i, i + 1));
if (tmp !== 0) {
if ((i === (decLen - 1)) && (tmp === 1))
result += 'เอ็ด';
else
if ((i === (decLen - 2)) && (tmp === 2))
result += 'ยี่';
else
if ((i === (decLen - 2)) && (tmp === 1))
result += '';
else
result += nums[tmp];
result += digits[decLen - i - 1];
}
}
return result += 'สตางค์';
}