Categories JavaScript

Các phương thức của String trong JavaScript

Các phương thức của String giúp bạn làm việc với Chuỗi. 


Các phương thức và thuộc tính của String

Giá trị nguyên thủy, như “Nguyễn Đức Anh”, không có thuộc tính và phương thức (bởi vì chúng không phải là đối tượng).

Nhưng với JavaScript, các phương thức và thuộc tính cũng được cấp cho các giá trị nguyên thủy, bởi vì JavaScript xử lý giá trị nguyên thủy như là đối tượng khi thực thi phương thức và thuộc tính.


Chiều dài của chuỗi (string)

Thuộc tính length trả về kết quả chiều dài của chuỗi.

Ví dụ:

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

Tìm chuỗi trong chuỗi

Phương thức indexOf() trả về vị trí xuất hiện đầu tiên của chuỗi cần tìm trong chuỗi lớn hơn.

Ví dụ:

var str = "Kiến càng có nhiều bài viết về HTML, CSS và JavaScript, ngoài ra còn có nhiều bài về PHP - MySQL nữa";
var pos = str.indexOf("nhiều");

Phương thức lastIndexOf() trả về vị trí xuất hiện cuối cùng của chuỗi cần tìm trong chuỗi lớn hơn.

Ví dụ:

var str = "Kiến càng có nhiều bài viết về HTML, CSS và JavaScript, ngoài ra còn có nhiều bài về PHP - MySQL nữa";
var pos = str.lastIndexOf("nhiều");

Cả hai phương thức indexOf()lastIndexOf() đều trả về kết quả -1 nếu chuỗi cần tìm không thấy.

JavaScript đếm vị trí bắt đầu từ zero (0).

0 là vị trí đầu tiên trong một chuỗi, 1 là vị trí thứ hai, 2 là vị trí thứ 3 …

Cả hai phương pháp chấp nhận một tham số thứ hai là vị trí khởi đầu cho tìm kiếm.


Tìm kiếm chuỗi trong chuỗi

Phương thức search() tìm kiếm một chuỗi với giá trị được chỉ định và trả về vị trí của chuỗi trùng khớp.

Ví dụ:

var str = "Kiến càng có nhiều bài viết về HTML, CSS và JavaScript, ngoài ra còn có nhiều bài về PHP - MySQL nữa";
var pos = str.search("nhiều");

Bạn cần chú ý điều gì?

Hai phương thức indexOf()search() là như nhau.

Chúng chấp nhận cùng một đối số và trả về cùng một giá trị.

Mặc dù hai phương thức rất giống nhau, nhưng search() có thể lấy giá trị tìm kiếm mạnh mẽ hơn nhiều.

Bạn sẽ học về sức mạnh tìm kiếm trong các chương về các biểu thức thông thường.


Trích xuất một phần chuỗi

Có 3 phương thức để trích xuất một phần chuỗi:

  • slice(start, end);
  • substring(start, end);
  • substr(start, length);

Phương thức slice()

slice() trích xuất một phần chuỗi và trả về phần đã trích xuất trong một chuỗi mới.

Phương thức có 2 tham số: chỉ số bắt đầu (vị trí), và chỉ số kết thúc (vị trí).

Ví dụ dưới đây cắt ra một phần của chuỗi từ vị trí 7 đến vị trí 13.

Ví dụ:

var str = "Apple, Banana, Kiwi";
var res = str.slice(7,13);

Kết quả sẽ là: Banana

Nếu đối số là số âm, vị trí được đếm từ điểm kết thúc của chuỗi.

Ví dụ dưới đây cắt ra một phần của chuỗi từ vị trí -12 đến -6.

Ví dụ:

var str = "Apple, Banana, Kiwi";
var res = str.slice(-12,-6);

Kết quả sẽ là: Banana

Nếu bạn bỏ qua đối số thứ hai, phương thức sẽ cắt từ điểm mà đối số thứ nhất chọn cho đến hết phần còn lại của chuỗi.

Ví dụ:

var res = str.slice(7);

Kết quả: Banana, Kiwi


hoặc là nó sẽ đếm từ vị trí cuối.

Ví dụ:

var res = str.slice(-12);

Kết quả: Banana, Kiwi

Đối số vị trí âm sẽ không làm việc trên Internet Explprer 8 và các phiên bản sớm hơn của trình duyệt này.


Phương thức substring()

substring() tương tự slice().

Sự khác biệt là substring() không chấp nhận chỉ số âm.

Ví dụ:

var str = "Apple, Banana, Kiwi";
var res = str.substring(7,13);

Kết quả là: Banana

Nếu bạn bỏ qua đối số thứ hai, substring() sẽ cắt từ vị trí được chọn cho đến hết chuỗi.


Phương thức substr()

substr() tương tự slice().

Sự khác biệt là đối số thứ hai chỉ định chiều dài của chuỗi trích xuất.

Ví dụ:

var str = "Apple, Banana, Kiwi";
var res = str.substr(7,6);

Kết quả sẽ là : Banana

Nếu đối số đầu là số âm, vị trí sẽ được đếm từ vị trí cuối của chuỗi.

Đối số thứ hai không thể là số âm, bởi vì nó định nghĩa chiều dài chuỗi.

Nếu bạn bỏ qua đối số thứ hai, substr() sẽ cắt từ vị trí được chọn cho đến hết phần còn lại của chuỗi (giống các phương thức kia).


Thay thế nội dung chuỗi

Phương thức replace() thay thế giá trị chỉ định với giá trị khác trong một chuỗi.

Ví dụ:

str = "Ghé thăm W3School để học web!";
var n = str.replace("W3School","Kiến càng");

Kết quả: Ghé thăm Kiến càng để học web!

Phương thức replace() có thuật toán tìm kiếm bên trong nó.

Theo mặc định, hàm replace() chỉ thay thế giá trị trùng khớp đầu tiên. Để thay thế tất cả các giá trị trùng khớp, sử dùng biểu thức thông thường với cờ g (cho toàn bộ giá trị trùng khớp – global match).

Ví dụ:

str = "Ghé thăm W3School để học web!";
var n = str.replace(/W3School/g,"Kiến càng");

Phương thức replace() không thay đổi chuỗi nó gọi đến. Nó trả về một chuỗi mới.


Chuyển đổi thành chữ viết hoa hoặc chữ viết thường

Một chuỗi có thể được chuyển thành chữ viết HOA với toUpperCase().

Ví dụ:

var text1 = "Kiến càng!";       // Chuỗi
var text2 = text1.toUpperCase();  // Chuỗi này sẽ được chuyển hết thành chữ viết HOA

Kết quả: KIẾN CÀNG

Một chuỗi được chuyển thành chữ thường với toLowerCase().

Ví dụ:

var text1 = "Kiến càng";       // Chuỗi
var text2 = text1.toLowerCase();  //Chuỗi này sẽ được chuyển hết thành chữ viết thường

Kết quả: kiến càng


Phương thức concat()

concat() nối hai hoặc nhiều chuỗi.

Ví dụ:

var text1 = "Đức Anh";
var text2 = "Plus";
text3 = text1.concat(" ",text2);

Kết quả: Đức Anh Plus

Phương thức concat() có thể sử dụng để thay thế toán tử cộng. Hai đoạn code này có ý nghĩa như nhau.

Ví dụ:

var text = "Đức Anh" + " " + "Plus";
var text = "Đức Anh".concat(" ","Plus");

Tất cả phương thức string đều trả về một chuỗi mới. Chúng không thay đổi chuỗi gốc.

Nói cách khác: Chuỗi là bất biến, không thể thay đổi, chỉ bị thay thế.


Trích xuất ký tự trong chuỗi

Có hai phương thức an toàn để trích xuất ký tự trong chuỗi:

  • charAt(vị trí)
  • charCodeAt(vị trí)

Phương thức charAt()

Phương thức charAt() trả về ký tự tại vị trí chỉ định trong chuỗi.

Ví dụ:

var str = "Kiến càng";
str.charAt(0); // trả về kết quả K

Phương thức charCodeAt()

Phương thức charCodeAt() trả về mã unicode của ký tự tại vị trí chỉ định trong một chuỗi.

Ví dụ:

var str = "Đức Anh Plus";
str.charCodeAt(0);  // trả về kết quả 272

Truy cập một chuỗi như là Mảng là Không an toàn

Bạn có thể thấy đoạn code giống như thế này, truy cập một chuỗi như là mảng:

var str = "Kiến càng";
str[0]; // Trả về kết quả K

Cách thức này là không an toànkhông thể đoán trước:

  • Nó không làm việc trên tất cả các trình duyệt (không làm việc trên IE5, IE6, IE7)
  • Nó làm chuỗi giống như mảng (nhưng nó không phải vậy)
  • str[0] = “Đ” không bị thông báo lỗi (nhưng nó không làm việc)

Nếu bạn muốn đọc một chuỗi như một mảng, trước tiên hãy chuyển đổi nó thành mảng.


Chuyển một chuỗi thành một mảng

Một chuỗi có thể được chuyển thành một mảng với phương thức split().

Ví dụ:

var txt = "a,b,c,d,e";   // Chuỗi
txt.split(",");   // Chia chuỗi thông qua dấu phẩy Split on commas
txt.split(" ");   // Chia chuỗi dựa trên dấu cách
txt.split("|");   // Chia chuỗi dựa trên dấu cách đứng

Nếu phần chia tác bị bỏ qua, kết quả trả về của mảng sẽ bao gồm toàn bộ chuỗi trong index[0].

Nếu chia tách là “”, kết quả trả về mảng sẽ là một mảng bao gồm các ký tự đơn lẻ.

Ví dụ:

var txt = "Hello"; // Chuỗi
txt.split(""); // Chia thành các ký tự đơn lẻ
Back to Top