1. Chuỗi trong JavaScript là gì?

Ở các bài trước, chúng ta đã làm quen với dữ liệu kiểu chuỗi, đó là các ký hiệu văn bản được đặt giữa cặp dấu nháy kép (” “). Một giá trị có kiểu dữ liệu chuỗi đôi khi còn được gọi là một “xâu văn bản” (xâu chuỗi các ký hiệu văn bản). Tiếng Anh được viết là String. Ba khái niệm “chuỗi”, “xâu” và “string” trong lập trình đều được sử dụng để ám chỉ một giá trị/biến có kiểu dữ liệu chuỗi.

Và mình sẽ nói lại khái niệm chuỗi: chuỗi là một đoạn text có thể có một hoặc nhiều ký tự và thông thường chúng ta sẽ lưu trữ nó vào một biến, biến này ta sẽ gọi là biến có kiểu dữ liệu là String (chuỗi). Tất cả các chuỗi đều phải được bao quanh bằng cặp dấu nháy đơn ‘ hoặc nháy kép “.

Ví dụ: Khai báo biến và gán chuỗi string JS

var website = "website laptrinhtudau.com học lập trình từ con số 0";
var email = 'laptrinhtudau@gmail.com';<br>

Lưu ý

Về việc sử dụng dấu ngoặc kép cho chuỗi thì bạn có thể lồng chúng với nhau, miễn là chúng không trùng với dấu ngoặc trước của chuỗi hay chính là dấu ngoặc của chuỗi đó.

Ví dụ:

let answer1 = "Học lập trình nè";
let answer2 = "Học lập trình tại 'laptrinhtudau.com'";
let answer3 = 'Học lập trình tại "laptrinhtudau.com"';

2. Chiều dài một chuỗi trong JavaScript

Độ dài chuỗi trong JavaScript chính là số mã ký tự được sử dụng để tạo nên chuỗi đó JavaScript, và trong phần lớn trường hợp chính là số ký tự có trong chuỗi đó. Trong JavaScript, về mặc định thì các ký tự sẽ được lưu giữ ở dạng bảng mã ký tự UTF-16, mà trong bảng mã này thì mỗi ký tự bình thường sẽ được biểu diễn bởi 1 mã ký tự, do đó thông thường thì chúng ta cũng coi việc tìm độ dài chuỗi trong JavaScript chính là đi đếm số ký tự trong chuỗi JavaScript.

Ví dụ: một chuỗi là ‘laptrinhtudau’ được tạo từ 13 ký tự nên độ dài chuỗi này là 13.

Tuy nhiên chúng ta cũng cần lưu ý là trong bảng mã này ngoài các ký tự bình thường thì cũng chứa các ký tự đặc biệt là surrogate pair characters (ví dụ như icon cảm xúc chẳng hạn) với mỗi ký tự được biểu diễn bởi 2 mã ký tự. Do đó cũng có trường hợp độ dài chuỗi sẽ không bằng với số ký tự chứa trong nó.

Ta sẽ đếm số ký tự trong chuỗi javascript bằng thuộc tính length .

Ví dụ:

let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

let length = text.length;

Lưu ý

  • Về mặc định thì ký tự trong JavaScript được lưu giữ bởi bảng mã ký tự UTF-16 với các ký tự bình thường sẽ được biểu diễn bởi 1 mã ký tự, do đó kết quả của thuộc tính length trong JavaScript là số ký tự có trong chuỗi chứ không phải là số bite có trong chuỗi, do đó kể cả các ký tự được tạo bởi 2 bite trở lên như tiếng Việt có dấu hay tiếng Nhật zenkaku, thì thuộc tính length cũng đưa ra kết quả là số ký tự trong chuỗi JavaScript .
  • Duy nhất chỉ trong trường hợp nếu chuỗi ký tự đó chứa các ký tự surrogate pair characters thì kết quả thuộc tính length mới không phải là số ký tự trong chuỗi JavaScript mà thôi.

3. Thoát chuỗi trong JavaScript

Bởi vì chuỗi sẽ được viết trong dấu ngoặc kép nhưng ta sẽ có trường hợp sau:

let text = "Chúng ta học lập trình"laptrinhtudau.com"từ con số 0.";

Js sẽ hiểu sai chuỗi này và chuỗi sẽ được cắt thành “Chúng ta học lập trình”. Vì ở đây ta hiểu nôm na là đã đóng chuỗi “Chúng ta học lập trình” còn laptrinhtudau.com không ở trong chuỗi nên Js sẽ tự hiểu là chỉ có “Chúng ta học lập trình” và không quan tâm đến những thứ sau đó. Vậy để làm gì để Js không hiểu sai ý của chúng ta? Giải pháp để tránh vấn đề này là sử dụng ký tự thoát dấu gạch chéo ngược. Dấu gạch chéo ngược (\) thoát và biến các ký tự đặc biệt thành các ký tự chuỗi.

Code Kết quả Mô tả
\’ Chèn dấu nháy đơn
\” Chèn dấu ngoặc kép
\\ \ Chèn dấu gạch chéo ngược

Với ví dụ trên ta sẽ dùng trình tự \” chèn một dấu ngoặc kép trong một chuỗi:

let text = "Chúng ta học lập trình\"laptrinhtudau.com\"từ con số 0.";

Sử dụng \’ chèn một dấu ngoặc kép trong một chuỗi:

let text= 'It\'s alright.';

Sử dụng \\ chèn một dấu gạch chéo ngược trong một chuỗi:

let text = "laptrinhtudau.com \\ học lập trình từ con số 0.";

Sáu chuỗi thoát khác hợp lệ trong JavaScript:

Code Mô tả
\b Xóa lùi
\f Chuyển dạng
\n Dòng mới
\t Bảng ngang
\v Bảng dọc
\r Trở lại

Chú ý

6 ký tự thoát ở trên ban đầu được thiết kế để điều khiển máy đánh chữ, máy đánh chữ và máy fax. Chúng không có ý nghĩa gì trong HTML.

4. Ngắt dòng mã dài ở chuỗi trong JavaScript

Để dễ dàng cho việc quản lý và đọc code nhất thì các lập trình viên thường tránh các dòng mã dài hơn 80 ký tự. Vì thế mà ta sẽ phải ngắt dòng mã nếu như nó quá dài gây bất tiện. Ở đây nếu một câu lệnh Js không nằm trên một dòng, thì vị trí tốt nhất để ngắt câu lệnh đó là sau một toán tử.

Ví dụ:

document.getElementById("demo").innerHTML =

"Hello laptrinhtudau!";

Ta cũng có thể chia nhỏ một dòng mã trong một chuỗi văn bản bằng một dấu gạch chéo ngược.

Ví dụ:

document.getElementById("demo").innerHTML = "Hello \

laptrinhtudau!";

Mình chỉ giới thiệu cách dùng dấu gạch chéo ngược nhưng nó lại không phải là phương pháp ưu thích. Nó có thể không được hỗ trợ phổ biến. Một số trình duyệt thì không cho phép khoảng trắng phía sau ký tự \

Một cách an toàn hơn đó là sử dụng phép cộng chuỗi

Ví dụ:

document.getElementById("demo").innerHTML = "Hello " +

"laptrinhtudau!";

Chú ý

Ta không thể ngắt dòng bằng dấu gạch chéo ngược (\) như trong ví dụ sau:

document.getElementById("demo").innerHTML = \

"Hello laptrinhtudau!";