Wednesday, April 27, 2005

ตัดคำไทยด้วย MS-Word Macro

เมื่อวานคุยกับคนญี่ปุ่นเรื่องตัดคำไทย เขาสงสัยว่า MS-Word ใช้อะไรตัดคำ ทีแรกก็คิดว่าโปรแกรมบน Windows ทั้งหลาย ตัดคำไทยโดยใช้ Uniscribe

แต่เท่าที่เขาทดลอง ดูเหมือน MS-Word จะตัดคำแตกต่างจากโปรแกรมอื่นๆ เช่น IE หรือ Wordpad เช่นคำว่า "ระบบปฏิบัติการ" หากแกล้งให้ตัดคำด้วย IE/Wordpad/Uniscribe จะได้ผลเป็น

คือ ถูกตัดออกเป็นสามส่วน "ระบบ", "ปฏิบัติ", "การ" แต่ใน MS-Word คำนี้จะถือเป็นคำๆเดียว ไม่มีการตัด คือ

จะทดสอบง่ายๆโดยเปิดโปรแกรม พิมพ์คำว่า "ระบบปฏิบัติการ" หลายๆตัว แล้วกด Ctrl+→ ข้ามคำดูก็ได้

ลองเขียนโปรแกรม Macro ใน MS-Word ให้ใส่เครื่องหมาย "-" ระหว่างคำดู

Sub cutThai()
'
' cutThai Macro
' Macro created 2005/04/27 by vuthi
'
Dim word As Range
For Each word In ActiveDocument.Words
    word.InsertBefore ("-")
Next
End Sub
รันแล้วได้ผลแบบนี้

เห็นได้ว่า MS-Word ถือว่า "ระบบปฏิบัติการ" เป็นคำๆเดียว ในโปรแกรม Macro ถ้าใช้ InsertAfter แทน InsertBefore มันจะวนลูปไม่จบ เพราะถือว่า "-" ที่เพิ่งใส่เพิ่มเข้าไปเป็นคำถัดไป ทำให้เพิ่ม "-" ต่อท้าย "-" ไปเรื่อยๆไม่จบสิ้น

ตกลง MS-Word มันใช้อะไรตัดหว่า อาจจะถูกพัฒนาต่างหากจากการตัดคำของ Windows (Uniscribe) หรือไม่ก็มีดิกต่างหากของตัวเอง

รวมเรื่องตัดคำบน Blog นี้

1 comment:

poonlap said...

ดูเหมือนว่า word มีพจนานุกรมของตัวเอง (?).