การค้นหาและแทนที่ข้อความ

TypeScript:
การค้นหาและแทนที่ข้อความ

วิธีการ:

TypeScript ซึ่งพัฒนาต่อจาก JavaScript มาพร้อมกับวิธีการจัดการสตริงที่มีประโยชน์ เราสามารถใช้ String.prototype.replace() สำหรับการค้นหาและแทนที่ขั้นพื้นฐาน ดูตัวอย่างเหล่านี้:

// การแทนที่สตริงง่ายๆ
let text: string = "Hello, World!";
let newText: string = text.replace("World", "TypeScript");
console.log(newText);  // ผลลัพธ์: Hello, TypeScript!

// การแทนที่ทั่วโลกด้วย regex
let regexText: string = "foo bar foo bar";
let globalRegex: RegExp = /foo/g;
let newRegexText: string = regexText.replace(globalRegex, "baz");
console.log(newRegexText);  // ผลลัพธ์: baz bar baz bar

// การแทนที่ด้วยฟังก์ชัน
let dynamicText: string = "I have 2 apples and 5 oranges.";
let fruitCounter: string = dynamicText.replace(/\d+/g, (match) => {
    return (+match * 2).toString();
});
console.log(fruitCounter);  // ผลลัพธ์: I have 4 apples and 10 oranges.

ศึกษาลึกลงไป

ในอดีต การแทนที่ข้อความเป็นคุณสมบัติในเครื่องมือการประมวลผลข้อความแม้แต่เครื่องมือแรก ๆ โดยเครื่องมือ Unix อย่าง sed เป็นตัวอย่างที่เด่นชัด ในการโปรแกรมที่ทันสมัยยิ่งขึ้น การดำเนินการแทนที่มักจะมีประสิทธิภาพมากขึ้นเมื่อรวมกับ regular expressions (regex) สำหรับการจับคู่รูปแบบ

ทางเลือกอื่นๆ กับ String.prototype.replace() ใน TypeScript มีหลายแบบ ไลบรารีเช่น Lodash นำเสนอ _.replace() ด้วยไวยากรณ์ที่คล้ายกัน สำหรับสถานการณ์ที่ซับซ้อนขึ้น คุณอาจพิจารณาสร้างตัวแยกวิเคราะห์ของคุณเองหรือใช้ไลบรารีแยกวิเคราะห์สำหรับงานการเปลี่ยนแปลงที่เกินกว่าการแทนที่สตริงง่ายๆ

เมื่อเราพูดถึงการเนินการ .replace() ไม่ได้เปลี่ยนแปลงสตริงเดิม สตริงใน JavaScript และ TypeScript เป็น immutable วิธีนี้ส่งคืนสตริงใหม่ ดังนั้นถ้าคุณต้องการข้อความที่แก้ไขแล้ว คุณจะต้องเก็บไว้ เช่น ในตัวอย่างด้านบน

ดูเพิ่มเติม

  • MDN Web Docs เกี่ยวกับ replace(): MDN String replace
  • เครื่องมือทดสอบ Regex เพื่อทำให้ทักษะการจับคู่รูปแบบของคุณเฉียบคมยิ่งขึ้น: Regex101
  • การแทนที่สตริงของ Lodash สำหรับแนวทางทางเลือก: Lodash _.replace