C# แปลงตัวเลขเป็นข้อความภาษาอังกฤษแล้วเก็บค่าลงใน List นอก method ไม่ได้ครับ

ผมต้องการแปลงตัวเลขเป็นข้อความภาษาอังกฤษครับ ซึ่งผมได้โค้ดการแปลงตัวเลขเป็นข้อความภาษาอังกฤษจากเว็บนี้ครับ http://stackoverflow.com/questions/2729752/converting-numbers-in-to-words-c-sharp แล้วเอามาแก้ไขให้บันทึกข้อความลงใน List ซึ่งก็ใช้งานได้ดี

แต่ผมต้องการเอา List ออกไปประกาศนอก method ครับ เพื่อจะได้ใช้ ttsEN.Add() ที่ด้านนอกด้วย แต่พอประกาศที่ด้านนอกแล้ว Run จะได้ผลลัพธ์แบบนี้ครับ

    four
    four
    thousand
    five
    five
    hundred
    and
    fifteen

ซึง four กับ five ซ้ำกัน ผมจึง comment ที่ ttsEN.Add(unitsMap[number]); ผลที่ได้ถูกต้องแต่ไม่มี fifteen หลัง and ครับ ไม่ทราบว่าต้องแก้ยังไงครับ

public List<String> NumberToWordEN(int number)
{
// List<string> ttsEN = new List<string>ร้องไห้);                 // ตรงนี้ประกาศนอก method แล้วค่าผิดพลาดข้อความซ้ำกัน

var unitsMap = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
var tensMap = new[] { "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };


if (number == 0)
{
ttsEN.Add("zero");
return ttsEN;
}
string words = "";

if ((number / 1000000) > 0)
{
words += NumberToWordEN(number / 1000000) + " million ";

ttsEN.Add(unitsMap[(number / 1000000)]);
ttsEN.Add("million");

number %= 1000000;
}

if ((number / 1000) > 0)
{
words += NumberToWordEN(number / 1000) + " thousand ";

ttsEN.Add(unitsMap[(number / 1000)]);
ttsEN.Add("thousand");

number %= 1000;
}

if ((number / 100) > 0)
{
words += NumberToWordEN(number / 100) + " hundred ";

ttsEN.Add(unitsMap[(number / 100)]);
ttsEN.Add("hundred");

number %= 100;
}

if (number > 0)
{
if (words != "")
{
words += "and ";
ttsEN.Add("and");
}

if (number < 20)
{
words += unitsMap[number];
ttsEN.Add(unitsMap[number]);                 // ถ้า comment ตรงนี้จะได้ค่าถูกต้องแต่ไม่มี fifteen หลัง and
}
else
{
words += tensMap[number / 10];
ttsEN.Add(tensMap[number / 10]);

if ((number % 10) > 0)
{
words += "-" + unitsMap[number % 10];
ttsEN.Add(unitsMap[number % 10]);
}
}

}
return ttsEN;

}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่