เพิ่ม Method ใหม่ ให้กับ String: "replaceAll"


** JavaScript ไม่ได้มาจากภาษา Java

หลายๆ ท่านที่ได้มีโอกาศได้เขียน JavaScript นั้น น่าจะมีโอกาศได้ใช้ Method: replace  ซึ่งเป็น Method มีไว้สำหรับ "ค้นหา" และ "แทนที่" ด้วยตัวอักษรหรือข้อความที่ต้องการ

ตัวอย่าง

ผมสั่งให้แทนที่ "a" ด้วย "x"
ผลลัพธ์ที่จะได้คือ   txt = 'xbcde';

** ตรงนี้ผมขออนุญาตไม่อธิบายถึงความหมายของคำสั่งว่ามีการทำงานเป็นอย่างไร เพราะผมเชื่อว่าหลายๆ ท่านที่เขียน JavaScript น่าจะมีพื้นฐานการเขียนโปรแกรมอยู่บ้างแล้ว อ่านแล้วย่อมน่าจะเข้าใจดี

 ทีนี่เรามาดูถึงข้อจำกัดของ Method: replace กันบ้าง

ตัวอย่าง

 ผลลัพธ์ที่จะได้คือ   txt = 'xbcdeabcdeabcde';

 สังเกตุไหมครับว่า มีแค่ "a" เพียงตัวแรกเท่านั้นที่ถูกแทนที่ด้วย "x" แต่ "a" ตัวอื่นๆ ยังคงเหมือนเดิม ไม่ได้ถูกแทนที่ นี่แหละครับคือข้อจำกัดของ Method: replace

ที่นี่ถ้าเราต้องการแทนที่ "a" ทุกตัวที่อยู่ในข้อความด้วย "x" จะต้องทำอย่างไรบ้าง
วิธีที่คนทั่วไปนิยมใช้กันคือ ใช้ "while" และ Method: indexOf เข้ามาช่วย

ตัวอย่าง

 ผลลัพธ์ที่จะได้คือ   txt = 'xbcdexbcdexbcde';

 ซึ่งวิธีนี้เป็นวิธีที่ไม่ยาก เพียงแต่ว่า ถ้ามีการใช้งานบ่อยครั้ง ก็จะทำให้เสียเวลาในการพิมพ์หรือ copy&paste พอสมควร เมื่อใช้บ่อยๆ เข้า ก็จะทำให้ดูรกหูรกตา ทำให้ Code มีเยอะมากจนไม่จำเป็น  หรือจะนำมาเขียนเป็น Function

ตัวอย่าง

 วิธีนี้ก็ทำให้ดูใช้งานง่ายขึ้น ซึ่งเท่านี้ก็เพียงพอต่อการใช้งานแล้วครับ

แต่ถ้าคุณต้องการให้ใช้งานง่ายกว่านี้ ก็อ่านต่อไปได้เลย หรือพอใจกับ function ข้างต้น ก็หยุดอ่านได้เลยครับ เพราะตัวอย่างต่อไปนี้เป็นระดับขั้นสูง (Advance) ซึ่งผลลัพธ์ที่ได้ก็เหมือนกันกับตัวอย่างข้างต้นแล้ว เหมาะสำหรับคนที่อยากจะเขียนให้มันดู Advance หน่อยว่างั้น

 มาดูกันต่อ คราวนี้เราจะทำให้ JavaScript ของเรา นั้นดู Advance มากขึ้น

 Code:

 ลองเอา Code นี้ไปใช้ดูสิครับ ว่ามันสามารถใช้งานได้หรือเปล่า

รับรองครับ เกิด Error แน่นอน เพราะใน JavaScript นั้น เพราะไม่มี Method ที่ชื่อว่า "replaceAll" ใน Object: String (มีแต่ "replace" เฉยๆ) 

ดังนั้นเพื่อให้เราสามารถใช้งาน Method: replaceAll ได้นั้น เราจะต้องเขียนมันขึ้นมาเอง  โดยการสร้าง Method ให้กับ Object: String

 Code:

บรรทัดที่ 3: เป็นการตรวจสอบว่า String มี Method: replaceAll อยู่แล้วหรือไม่
บรรทัดที่ 4: เป็นการสร้าง Method: replaceAll ให้กับ String
บรรทัดที่ 5 - 8: เป็นการทำงานของโปรแกรม (เหมือนกับตัวอย่าง function ข้างต้น)
บรรทัดที่ 9: return ค่าที่ได้ออกมา
บรรทัดที่ 14: คือวิธีใช้ Method: replaceAll

นี่เป็นการเขียน Method ใหม่ขึ้นมาใช้งานเอง เพื่อเพิ่มความสะดวกสบาย และทำให้ดู Advance มากยิ่งขึ้น

Method: replaceAll นี้ผมได้เขียนขึ้นมา เพราะในภาษา Java มี Method: replaceAll ให้ใช้งาน แต่ใน JavaScript ดันไม่มีให้ใช้ซะงั้น

 ** ข้อควรระวังในการใช้ Method: replace อย่าใส่ค่าว่างเปล่าลงไปใน parameter ตัวแรก
ตัวอย่าง: txt = txt.replace('', '');
เพราะคุณจะเจอกับการวนลูปที่ไม่รู้จบ ถ้าไม่เชื่อ ลองทำดูได้ครับ

 

 เนื่องจากผมเป็นคนที่บรรยายอะไรไม่ค่อยจะเก่งนัก จึงอาจจะเขียนให้อ่านไม่เข้าใจกันบ้าง ต้องขออภัยมา ณ ที่นี้ด้วยนะครับ มิอะไรติชมกันได้ครับ จะพยายามเขียนบทความเกี่ยวกับ JavaScript ออกมาเรื่อยๆ นะครับ (ถ้ามีเวลาว่าง)

คำสำคัญ (Tags): #html#javascript#replace
หมายเลขบันทึก: 159453เขียนเมื่อ 16 มกราคม 2008 00:06 น. ()แก้ไขเมื่อ 13 มิถุนายน 2012 15:26 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (0)

ไม่มีความเห็น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท