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