Wednesday, March 02, 2005

แปลง 全角・半角 ด้วย C#

ใน VB6 ทำได้ด้วย StrConv แต่บน .Net ต้องไปเอามาจาก Microsoft.VisualBasic โดย เพิ่ม Component ที่ชื่อ "Microsoft Visual Basic .Net Runtime" ในรายการ Assembly ของ Project แล้วใช้
using Microsoft.VisualBasic;
...
  String test = "ガッコウ";
  myprint("From "+test);
  myprint("Len: "+test.Length);

  test = Strings.StrConv(test, VbStrConv.Narrow, 0);
  myprint("To   "+test);
  myprint("Len: "+test.Length);

  test = Strings.StrConv(test, VbStrConv.Wide, 0);
  myprint("To   "+test);
  myprint("Len: "+test.Length);
class Strings อยู่ภายใต้ Microsoft.VisualBasic เป็นคนละตัวกับ String (ไม่มี s) ที่ใช้กันตามปกติ ผลที่ได้
From ガッコウ
Len: 4
To   ガッコウ
Len: 5
To   ガッコウ
Len: 4
เห็นได้ว่า การแปลง 全角・半角 ไม่ได้ลดจำนวนไบต์จาก 2-1 อย่างเดียว บางทีต้องแยกตัวประกอบ เช่น ゙ ออกมาให้ด้วย

No comments: