Lab 3


สาธิตการใช้ String

ก่อนจะเริ่มเขียนโปรแกรมของปฏิบัติการนี้ อยากให้ลองชมภาพยนตร์สาธิตการใช้ substring และ indexOf ซึ่งเป็นบริการหลักที่ต้องใช้ใน lab นี้  (ภาพยนตร์มีความยาวประมาณ 3 นาทีเท่านั้น)  กดปุ่ม play แล้วดูตามไป



email address

ในปัจจุบันนี้ เขาชอบเขียนโปรแกรมอ่านเว็บเพจในอินเตอร์เน็ต แล้วก็ดึงเอาส่วนที่เป็น email address มาเก็บรวบรวมไว้  เพื่อจะได้ส่ง email ขายสินค้าและบริการมากมายให้ชาวอินเตอร์เน็ต (วัน ๆ เราจะได้รับ email แบบนี้ที่เรียกกันว่า junk email หรือ spam กันมากจนน่าเบื่อหน่าย)

email address ที่ปรากฏในเว็บเพจมักเขียนในรูปแบบ

"mailto:somchai@www.thai.com"

ดังนั้นวิธีง่าย ๆ วิธีหนึ่งคือการดูข้อความต่าง ๆ ในเว็บเพจ ถ้าพบข้อความที่ขึ้นต้นด้วย "mailto: ก็จะรู้ว่าข้อความที่ตามมาคือ email address จนถึงตัวอักษร " ที่ปิดท้าย  เช่นจากข้อความข้างล่างนี้

    ... please mail to "mailto:somchai@thai.com" ... 

ก็ย่อมได้ email address เป็น somchai@thai.com 

สิ่งที่ต้องการ

  • ให้เขียนการทำงานของคลาส EmailHarvester โดยเพิ่ม main method ให้ทำงานดังนี้
    • แสดงคำว่า input : แล้วรอรับทางแป้นพิมพ์ให้ผู้ใช้ใส่ข้อความอะไรก็ได้ที่มี email address อยู่ในข้อความนั้นด้วยคำสั่ง

     JLabIO.readString("input : "); 

    • ใช้ indexOf เพื่อหาตำแหน่ง "\"mailto:" ในสตริงที่ได้รับ
      • หมายเหตุ : ให้สังเกตว่า เครื่องหมาย \" ที่ปรากฏภายในสตริงนั้น จะถูกตีความว่าเป็นเครื่องหมาย " ตัวเดียวเท่านั้น  (มันเป็นวิธีเขียนในจาวา  เพราะเครื่องหมาย " ถูกใช้เป็นตัวเริ่มต้นและปิดท้ายสตริง  เลยต้องเขียนแบบพิเศษแบบนี้)
    • ใช้ indexOf อีกทีเพื่อหา " ตัวถัดไปทางขวา
    • จากค่าที่ได้ทั้งสอง สามารถใช้ substring ดึงสตริงย่อยที่เป็น email address ออกมาได้  แล้วก็นำออกไปแสดงทางจอภาพ  (ไม่ต้องแสดงข้อความใด ๆ อย่างอื่นกำกับ แสดงเพียง email address ที่หาได้เท่านั้น 
    • ดังตัวอย่างข้างล่างนี้


คะแนนเต็ม : 10 คะแนน

  • เมื่อเขียนเสร็จ
    • ถ้าต้องการสั่งทำงาน และกรอกข้อมูลเอง ก็ให้กดปุ่ม F5
    • แต่ถ้าต้องการให้ระบบตรวจสอบความถูกต้องและให้คะแนนด้วย ให้กดปุ่ม F6
      (ระบบจะสุ่มข้อมูล 10 ชุด แล้วส่งไปทดสอบโปรแกรม EmailHarvest ที่เขียนขึ้น ถ้าทำงานถูกต้องก็ให้คะแนน ชุดละ 1 คะแนน)
  • เมื่อใดที่ระบบถามว่าจะส่ง (submit) ผล (และคะแนน) หรือไม่  ก็ควรให้ส่ง  (จะส่งกี่ครั้งก็ได้)
  • หมายเหตุ : จะให้ระบบตรวจสอบความถูกต้องกี่ครั้งก็ได้