Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- internal struct OPOSThaiText
- {
- internal string TextLine1;
- internal string TextLine2;
- internal string TextLine3;
- }
- private OPOSThaiText ParsingThaiCodePage21(string prntTxt)
- {
- string strLine1 = null;
- string strLine2 = null;
- string strLine3 = null;
- int i = 0;
- int aCode = 0;
- int aNextCode = 0;
- string strChar = null;
- OPOSThaiText resultText = default(OPOSThaiText);
- strLine1 = "";
- strLine2 = "";
- strLine3 = "";
- for (i = 0; i <= Strings.Len(prntTxt) - 1; i++) {
- if (i >= Strings.Len(prntTxt)) {
- break; // TODO: might not be correct. Was : Exit For
- }
- aCode = Strings.Asc(prntTxt[i]);
- strChar = prntTxt[i];
- switch (aCode) {
- case 0xd1:
- case 0xd4:
- case 213:
- case 214:
- case 215:
- //ไม้หันอากาศ และ สระด้านบน เช่น อิ อี
- //Check if letter next to it is วรรณยุกต์
- if (i == Strings.Len(prntTxt) - 1) {
- //This is the last letter
- strChar = prntTxt[i];
- } else {
- aNextCode = Strings.Asc(prntTxt[i + 1]);
- switch (aNextCode) {
- //Comboine current and the next character into new one
- case 0xe8:
- case 233:
- case 234:
- case 235:
- case 236:
- case 237:
- //วรรณยุกต์ และการันต์
- switch (aNextCode) {
- case 0xe8:
- //ไม้เอก
- switch (aCode) {
- case 0xd1:
- //ไม้หันอากาศ
- aNextCode = 0x80;
- break;
- case 0xd4:
- //อิ
- aNextCode = 0x84;
- break;
- case 0xd5:
- //อี
- aNextCode = 0x89;
- break;
- case 0xd6:
- //อึ
- aNextCode = 0x8d;
- break;
- case 0xd7:
- //อื
- aNextCode = 0x91;
- break;
- }
- break;
- case 0xe9:
- //ไม้โท
- switch (aCode) {
- case 0xd1:
- //ไม้หันอากาศ
- aNextCode = 0x81;
- break;
- case 0xd4:
- //อิ
- aNextCode = 0x85;
- break;
- case 0xd5:
- //อี
- aNextCode = 0x8a;
- break;
- case 0xd6:
- //อึ
- aNextCode = 0x8e;
- break;
- case 0xd7:
- //อื
- aNextCode = 0x92;
- break;
- }
- break;
- case 0xea:
- //ไม้ตรี
- switch (aCode) {
- case 0xd1:
- //ไม้หันอากาศ
- aNextCode = 0x82;
- break;
- case 0xd4:
- //อิ
- aNextCode = 0x86;
- break;
- case 0xd5:
- //อี
- aNextCode = 0x8b;
- break;
- case 0xd6:
- //อึ
- aNextCode = 0x8f;
- break;
- case 0xd7:
- //อื
- aNextCode = 0x93;
- break;
- }
- break;
- case 0xeb:
- //ไม้จักวา
- switch (aCode) {
- case 0xd1:
- //ไม้หันอากาศ
- aNextCode = 0x83;
- break;
- case 0xd4:
- //อิ
- aNextCode = 0x87;
- break;
- case 0xd5:
- //อี
- aNextCode = 0x8c;
- break;
- case 0xd6:
- //อึ
- aNextCode = 0x90;
- break;
- case 0xd7:
- //อื
- aNextCode = 0x94;
- break;
- }
- break;
- case 0xec:
- //การันต์
- switch (aCode) {
- case 0xd4:
- //อิ
- aNextCode = 0x88;
- break;
- }
- break;
- }
- strChar = Strings.Chr(aNextCode);
- i += 1;
- break;
- default:
- strChar = prntTxt[i];
- break;
- }
- }
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + strChar;
- break;
- case 0xe7:
- case 232:
- case 233:
- case 234:
- case 235:
- case 236:
- case 237:
- //วรรณยุกต์
- //Check if letter next to it is วรรณยุกต์
- if (i == Strings.Len(prntTxt) - 1) {
- //This is the last letter
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + prntTxt[i];
- } else {
- aNextCode = Strings.Asc(prntTxt[i + 1]);
- switch (aNextCode) {
- case 0xd3:
- //สระอำ
- switch (aCode) {
- //เปลี่ยน สระอำ เป็น สระอา และ เปลี่ยน ลูกกลมข้างบนรวมกับวรรณยุกต์
- case 0xe8:
- //ไม้เอก
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x95) + " ";
- break;
- case 0xe9:
- //ไม้โท
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x96) + " ";
- break;
- case 0xea:
- //ไม้ตรี
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x97) + " ";
- break;
- case 0xeb:
- //ไม้จักวา
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x98) + " ";
- break;
- }
- strLine2 += Strings.Chr(0xd2);
- strLine3 += " ";
- i += 1;
- break;
- default:
- strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + prntTxt[i];
- break;
- }
- }
- break;
- case 0xd8:
- case 217:
- //สระ อุ อู
- strLine3 = Strings.Mid(strLine3, 1, Strings.Len(strLine3) - 1) + prntTxt[i];
- break;
- default:
- strLine1 += " ";
- strLine2 += prntTxt[i];
- strLine3 += " ";
- break;
- }
- }
- resultText.TextLine1 = strLine1;
- resultText.TextLine2 = strLine2;
- resultText.TextLine3 = strLine3;
- return resultText;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement