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 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.
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ả.