TypeScript:
ค้นหาความยาวของสตริง
วิธีทำ:
ใน TypeScript, คุณสามารถหาความยาวของสตริงได้โดยใช้คุณสมบัติ .length
นี่คือตัวอย่าง:
let greeting: string = "Hello, TypeScript!";
console.log(greeting.length); // ผลลัพธ์: 18
รหัสนี้ประกาศตัวแปรสตริงที่ชื่อว่า greeting
แล้วจากนั้นจะแสดงความยาวของมันออกทางคอนโซล
การดำดิ่งลึก
คุณสมบัติ .length
เป็นการสืบทอดมาจาก JavaScript, ซึ่งเป็นภาษาแม่ของ TypeScript เป็นวิธีที่ตรงไปตรงมาและได้รับการสนับสนุนอย่างทั่วถึงในการเอาขนาดของสตริง
มีวิธีอื่นๆ แต่มักจะทำให้สิ่งต่างๆ ซับซ้อนขึ้น เช่น คุณอาจจะแปลงสตริงเป็นอาร์เรย์และนับสมาชิก:
let greetingArray: string[] = Array.from(greeting);
console.log(greetingArray.length); // ผลลัพธ์: 18
แต่ทำไมต้องเลือกวิธีที่ยากลำบาก? คุณสมบัติ .length
เป็นวิธีที่มีประสิทธิภาพเนื่องจากสตริงถูกเก็บเป็นอาร์เรย์ของตัวอักขระโดยพื้นฐาน, ดังนั้นข้อมูลความยาวจึงสามารถเข้าถึงได้อย่างง่ายดาย
ตอนนี้, สมมติว่าคุณกำลังจัดการกับสตริงจากภาษาต่างๆ คุณอาจเจอปัญหากับตัวอักขระพิเศษ วิธีการ .length
พื้นฐานนับ UTF-16 code units, ซึ่งอาจจะมีปัญหาสำหรับตัวอักขระที่ต้องการสอง code units, ที่เรียกว่าคู่ surrogate ในกรณีเช่นนี้, คุณสมบัติ .length
อาจไม่ให้คุณนับจำนวนอักขระจริง หรือที่เรียกว่า code points
นี่คือวิธีที่คุณสามารถจัดการกับสตริงที่มีคู่ surrogate:
function countCodePoints(str: string): number {
return Array.from(str).length;
}
let fancyGreeting: string = "Hello, 🌍!";
console.log(countCodePoints(fancyGreeting)); // ผลลัพธ์: 9
ฟังก์ชันนี้จัดการกับความซับซ้อนของการเข้ารหัสสตริงเพื่อให้แน่ใจว่าแต่ละตัวอักขระ ไม่ว่าจะเป็นคู่ที่เป็นหน่วยโค้ดเดียวหรือสองหน่วยโค้ด, ถูกนับอย่างถูกต้อง
ดูเพิ่มเติม
- คู่มือ TypeScript เกี่ยวกับสตริง: TypeScript Handbook
- MDN Web Docs เกี่ยวกับคุณสมบัติความยาวของสตริง: String.prototype.length
- Unicode และ JavaScript: JavaScript has a Unicode problem - Mathias Bynens