String Interpolation
Nhúng giá trị biến hoặc biểu thức vào trong chuỗi sử dụng template literal hoặc cú pháp tương tự.
Nội suy chuỗi là khả năng nhúng giá trị biến hoặc biểu thức trực tiếp vào trong chuỗi ký tự. Nó có khả năng đọc tốt hơn nối chuỗi (ghép bằng + toán tử) và được áp dụng rộng rãi trong các ngôn ngữ lập trình hiện đại. Nó được sử dụng trong hầu hết mọi tình huống liên quan đến xây dựng văn bản động, từ tạo thông báo cho người dùng và vận hành công cụ mẫu đến định dạng đầu ra log.
Trong JavaScript, template literal (`Hello, ${name}!`) cung cấp nội suy chuỗi. Được bao trong dấu backtick, bất kỳ biểu thức nào có thể được đặt bên trong ${}. Ngoài tham chiếu biến đơn giản, lời gọi hàm, toán tử ba ngôi và phép tính số học đều có thể được nhúng, cho phép lắp ráp chuỗi phức tạp trong một dòng. Tagged template literal còn cho phép xử lý tùy chỉnh các giá trị nhúng, như thoát HTML hoặc quốc tế hóa. Sách JavaScript ES6 đề cập chi tiết kỹ thuật template literal.
Trong Python, f-string (f"Hello, {name}!") đã là phương pháp nội suy tiêu chuẩn từ Python 3.6, thay thế các phương pháp cũ hơn str.format() and % operator . Ruby sử dụng "Hello, #{name}!", C# sử dụng $"Hello, {name}!", và Kotlin sử dụng "Hello, $name!". Mặc dù cú pháp khác nhau giữa các ngôn ngữ, khái niệm nhúng biến trực tiếp vào chuỗi là phổ quát. Của Swift "\(variable)" và của PHP "$variable" cung cấp chức năng tương tự.
Việc chọn giữa nội suy và nối chuỗi ảnh hưởng trực tiếp đến khả năng đọc và bảo trì mã. Ví dụ, "Name: " + firstName + " " + lastName + " (Age: " + age + ")" rõ ràng hơn nhiều khi viết là `Name: ${firstName} ${lastName} (Age: ${age})`. Nội suy đặc biệt có lợi trong các mẫu quốc tế hóa (i18n), nơi vị trí placeholder có thể cần thay đổi giữa các ngôn ngữ.
Nội suy chuỗi đòi hỏi nhận thức bảo mật. Nội suy trực tiếp đầu vào người dùng có thể gây lỗ hổng SQL injection hoặc XSS, khiến việc thoát ký tự đúng cách và truy vấn tham số hóa trở nên thiết yếu. Các công cụ mẫu như EJS, Jinja2 và Handlebars thường bao gồm tính năng tự động thoát, nhưng việc sử dụng sai bộ lọc raw or safe vẫn là cạm bẫy phổ biến. Sách lập trình bảo mật đề cập đến các phương pháp xử lý chuỗi an toàn.
Từ góc độ đếm ký tự, độ dài chuỗi nội suy phụ thuộc vào số ký tự của các giá trị nhúng. Khi nội suy số, số chữ số của kết quả toString() ảnh hưởng trực tiếp đến độ dài chuỗi. Ví dụ, ${price} với giá trị 1000 tạo ra 4 ký tự, trong khi 100000 tạo ra 6. Để định dạng độ dài cố định, kết hợp nội suy với padStart() or toFixed() là hiệu quả.