Kiểm tra xem string tồn tại substring hay không trong JavaScript?
Javascript
297
string
4
substring
1
White

Lam Pham viết ngày 15/01/2019

Có thể nói, việc kiểm tra xem string tồn tại substring hay không là một bài toán cơ bản ở bất kỳ một ngôn ngữ lập trình nào. Trong đó, JavaScript đã cung cấp sẵn một số cách khác nhau để giúp bạn thực hiện việc này.

Vì vậy, bài viết này sẽ tổng hợp các cách để kiểm tra string tồn tại substring hay không trong JavaScript mà mình biết. Sau đó, mình sẽ test thử tốc độ thực hiện của chúng xem cách nào cho tốc độ thực thi tốt nhất.

Các cách kiểm tra string tồn tại substring

String.prototype.includes()

Phương thức includes() sẽ xác định xem một substring có được tìm thấy trong một string hay không, nếu tìm thấy thì trả về true, ngược lại trả về false.

const string = ";lkjhgfdsazxcvbnm,.//.,mnbvcxz1234567890-=-0987654321qwertyuiop[]][poiuytrewqasdfghjkl;''";
const substring = "qwerty";
string.includes(substring);

Phương thức includes() được hỗ trợ từ ES6 trở lên. Tuy nhiên, mình thấy đây cũng không phải là vấn đề quá quan trọng.

String.prototype.indexOf()

Phương thức indexOf() sẽ tìm substring bên trong một string, nếu tìm được thì sẽ trả về vị trí kí tự đầu tiên của substring bên trong string, ngược lại sẽ trả về -1.

const string = ";lkjhgfdsazxcvbnm,.//.,mnbvcxz1234567890-=-0987654321qwertyuiop[]][poiuytrewqasdfghjkl;''";
const substring = "qwerty";
string.indexOf(substring) !== -1;

Phương thức indexOf() có hỗ trợ ES5 hoặc các phiên bản thấp hơn.

String.prototype.search()

Phương thức search() sẽ thực hiện tìm kiếm đoạn string tương ứng với một Regular Expression bên trong string cho trước, nếu tìm được thì sẽ trả về vị trí kí tự đầu tiên của substring bên trong string, ngược lại sẽ trả về -1.

const string = ";lkjhgfdsazxcvbnm,.//.,mnbvcxz1234567890-=-0987654321qwertyuiop[]][poiuytrewqasdfghjkl;''";
const substring = "qwerty";
string.search(new RegExp(substring)) !== -1;

String.prototype.match()

Phương thức match() cũng sẽ thực hiện tìm kiếm đoạn string tương ứng với một Regular Expression bên trong string cho trước, nếu tìm được thì sẽ trả về một Array chứa phần trùng khớp ở vị trí đầu tiên, ngược lại sẽ trả về null.

const string = ";lkjhgfdsazxcvbnm,.//.,mnbvcxz1234567890-=-0987654321qwertyuiop[]][poiuytrewqasdfghjkl;''";
const substring = "qwerty";
string.match(new RegExp(substring)) !== null;

RegExp.prototype.test()

Phương thức test() cũng sẽ thực hiện tìm kiếm đoạn string tương ứng với một Regular Expression bên trong string cho trước, nếu tìm được thì sẽ trả về true, ngược lại sẽ trả về false.

const string = ";lkjhgfdsazxcvbnm,.//.,mnbvcxz1234567890-=-0987654321qwertyuiop[]][poiuytrewqasdfghjkl;''";
const substring = "qwerty";
new RegExp(substring).test(string);

Test thử tốc độ các cách kiểm tra string tồn tại substring

Mình đã tạo sẵn các test tại JSBEN.CH - Check whether a string contains a substring in JavaScript. Kết quả test sẽ phụ thuộc vào trình duyệt web mà bạn đang sử dụng.

Khi mình chạy thử nhiều lần trên Google Chrome, Opera và Firefox thì kết quả là cách sử dụng String.prototype.indexOf() sẽ cho thời gian thực thi nhanh nhất. Ngoài ra, cách sử dụng String.prototype.includes()RegExp.prototype.test() cũng khá ổn.

Bạn có thể chạy thử bài test này trên trình duyệt của mình, xem cách nào chạy nhất rồi comment giúp mình xuống phía dưới nhé!

Lời kết

Trên đây là một số cách để kiểm tra string tồn tại substring trong JavaScript. Trong đó, mình thấy cách sử dụng String.prototype.indexOf() vừa nhanh mà lại hỗ trợ hầu hết các trình duyệt. Vì vậy, đây sẽ là cách mà mình sẽ lựa chọn để giải quyết bài toán này.

Còn bạn thì sao? Bạn đã-đang-sẽ lựa chọn cách nào? Chia sẻ quan điểm của mình nhé!

Còn bây giờ thì xin chào và hẹn gặp lại!


★ Nếu bạn thấy bài viết này hay thì hãy ghé thăm Blog hoặc theo dõi mình trên Facebook để nhận được thông báo khi có bài viết mới nhất nhé:

☛ Blog: Complete JavaScript
☛ Facebook Fanpage: Complete JavaScript
☛ Facebook Group: Hỏi đáp JavaScript VN

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lam Pham

28 bài viết.
71 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
32 13
Trước khi vào nội dung bài viết. Tôi xin đính chính giúp anh trả lời những câu hỏi chỉ là tựa đề của một bài hát tôi không có ý xưng hô là anh. Bài...
Lam Pham viết hơn 1 năm trước
32 13
White
16 4
JavaScript cung cấp nhiều cách khác nhau để convert String sang Number. Và trong bài viết này, mình sẽ tổng hợp lại một số cách mà mình đã biết. ...
Lam Pham viết 8 tháng trước
16 4
White
15 6
Có thể bạn thừa biết, JavaScript là một ngôn ngữ chạy (Link). Điều đó có nghĩa là nếu bạn thực hiện một tác vụ quá lớn trên giao diện chính thì khả...
Lam Pham viết hơn 1 năm trước
15 6
Bài viết liên quan
White
0 0
Chú ý khi dùng downcase downcase sẽ trả về nil nếu như xâu ký tự không có thay đổi. Ví dụ: ruby "FiShiNg".downcase return: fishing "fishing".down...
Toan Nguyen viết hơn 1 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
28 bài viết.
71 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!