String Concatenation
Quá trình nối nhiều chuỗi thành một. Thực hiện bằng toán tử +, template literal hoặc các phương thức chuyên dụng.
Nối chuỗi là quá trình ghép nhiều chuỗi lại với nhau để tạo thành một chuỗi duy nhất. Đây là thao tác cơ bản có sẵn trong hầu hết mọi ngôn ngữ lập trình, được sử dụng trong xây dựng giao diện người dùng, tạo thông báo log, lắp ráp truy vấn SQL và vô số tình huống khác. Mặc dù trông đơn giản, nối chuỗi có thể ảnh hưởng đáng kể đến hiệu suất khi xử lý khối lượng dữ liệu lớn, khiến việc hiểu đặc điểm riêng của từng ngôn ngữ trở nên thiết yếu.
Trong JavaScript, chuỗi có thể được nối bằng + toán tử, concat() phương thức, hoặc template literal (`${}`). Với số lượng nhỏ chuỗi, sự khác biệt hiệu suất không đáng kể, nhưng khi nối hàng nghìn chuỗi, Array.join() hiệu quả hơn nhiều. Ví dụ, nối 10.000 chuỗi bằng + trong vòng lặp tạo đối tượng chuỗi mới ở mỗi lần lặp, tiến gần đến độ phức tạp thời gian O(n²). Ngược lại, [...items].join('') được tối ưu hóa nội bộ và hoàn thành trong thời gian O(n). Sách xử lý chuỗi JavaScript đề cập đến sự đánh đổi giữa các phương pháp này.
Trong Python, + toán tử, f-strings, and ''.join() được sử dụng phổ biến. Trong CPython, nối lặp đi lặp lại bằng + trong vòng lặp tạo đối tượng chuỗi mới mỗi lần, gây suy giảm hiệu suất đáng kể cho hàng nghìn lần lặp. Tài liệu chính thức khuyến nghị sử dụng list comprehension với join(). Java cung cấp lớp StringBuilder như bộ đệm chuỗi có thể thay đổi phù hợp cho nối trong vòng lặp, trong khi Go cung cấp strings.Builder cho cùng mục đích.
Một khái niệm thường bị nhầm lẫn với nối chuỗi là nội suy chuỗi. Nối chuỗi ghép vật lý nhiều chuỗi, trong khi nội suy nhúng giá trị biến hoặc biểu thức vào trong mẫu. Template literal của JavaScript `Hello, ${name}!` là một dạng nội suy thực hiện nối chuỗi bên trong, nhưng có khả năng đọc tốt hơn.
Tính nhất quán bảng mã ký tự rất quan trọng khi nối chuỗi. Trộn lẫn các bảng mã khác nhau có thể gây ra văn bản bị lỗi, đặc biệt khi kết hợp giá trị lấy từ cơ sở dữ liệu với chuỗi ứng dụng nơi UTF-8 và bảng mã cũ có thể xung đột. Ngoài ra, nối trực tiếp đầu vào người dùng để xây dựng truy vấn SQL hoặc HTML có thể dẫn đến lỗ hổng SQL injection hoặc XSS, vì vậy phải luôn sử dụng truy vấn tham số hóa và thoát ký tự đúng cách. Sách cơ bản lập trình coi thao tác chuỗi là chủ đề thiết yếu.
Từ góc độ đếm ký tự, số ký tự của chuỗi đã nối bằng tổng độ dài các chuỗi riêng lẻ. Tuy nhiên, khi dấu phân cách được chèn trong quá trình nối, số ký tự của chúng được cộng thêm. Ví dụ, nối ba từ bằng dấu phẩy thêm hai ký tự phân cách. Để xác định chính xác tổng số ký tự, cách đáng tin cậy nhất là đếm chuỗi đã nối cuối cùng.