Hướng dẫn how do you check if a word is present in a string in javascript? - làm cách nào để kiểm tra xem một từ có trong chuỗi trong javascript không?

Một cách khác là KMP (KnuthTHER Morris, Fratt).

Thuật toán KMP tìm kiếm một chuỗi con dài-M trong chuỗi độ dài-N trong trường hợp xấu nhất O (N+M), so với trường hợp xấu nhất của O (N⋅m) cho thuật toán ngây thơ Hãy hợp lý nếu bạn quan tâm đến sự phức tạp trong trường hợp xấu nhất.

Dưới đây là triển khai JavaScript của Project Nayuki, được lấy từ https://www.nayuki.io/res/knuth-morris-pratt-string-pratching/kmp-string-patcher.js:

// Searches for the given pattern string in the given text string using the Knuth-Morris-Pratt string matching algorithm.
// If the pattern is found, this returns the index of the start of the earliest match in 'text'. Otherwise -1 is returned.

function kmpSearch(pattern, text) {
  if (pattern.length == 0)
    return 0; // Immediate match

  // Compute longest suffix-prefix table
  var lsp = [0]; // Base case
  for (var i = 1; i < pattern.length; i++) {
    var j = lsp[i - 1]; // Start by assuming we're extending the previous LSP
    while (j > 0 && pattern[i] !== pattern[j])
      j = lsp[j - 1];
    if (pattern[i] === pattern[j])
      j++;
    lsp.push(j);
  }

  // Walk through text string
  var j = 0; // Number of chars matched in pattern
  for (var i = 0; i < text.length; i++) {
    while (j > 0 && text[i] != pattern[j])
      j = lsp[j - 1]; // Fall back in the pattern
    if (text[i]  == pattern[j]) {
      j++; // Next char matched, increment position
      if (j == pattern.length)
        return i - (j - 1);
    }
  }
  return -1; // Not found
}

console.log(kmpSearch('ays', 'haystack') != -1) // true
console.log(kmpSearch('asdf', 'haystack') != -1) // false

Bạn có thể kiểm tra xem chuỗi JavaScript có chứa ký tự hoặc cụm từ bằng phương thức bao gồm (), indexof () hoặc biểu thức chính quy. Bao gồm () là phương pháp phổ biến nhất để kiểm tra xem một chuỗi có chứa một chữ cái hoặc một loạt các chữ cái và được thiết kế dành riêng cho mục đích đó.


Kiểm tra xem một chuỗi có chứa chuỗi con có phải là một nhiệm vụ phổ biến trong bất kỳ ngôn ngữ lập trình nào không. Ví dụ, giả sử bạn đang xây dựng một trò chơi trực tuyến. Bạn có thể muốn kiểm tra xem tên người dùng có chứa cụm từ bị cấm để đảm bảo tất cả các tên người dùng phù hợp với trò chơi của bạn hay không.

Hướng dẫn how do you check if a word is present in a string in javascript? - làm cách nào để kiểm tra xem một từ có trong chuỗi trong javascript không?

Tìm Bootcamp của bạn phù hợp

  • Karma nghề nghiệp phù hợp với bạn với bootcamp công nghệ hàng đầu
  • Truy cập các học bổng và khóa học chuẩn bị độc quyền

Chọn mối quan tâm của bạn họ Tên điện thoại Email Tên của bạn
First name

Last name

Email

Phone number

Bằng cách tiếp tục, bạn đồng ý với các điều khoản dịch vụ và chính sách quyền riêng tư của chúng tôi và bạn đồng ý nhận được các ưu đãi và cơ hội từ Karma nghề nghiệp qua điện thoại, tin nhắn văn bản và email.

Chuỗi JavaScript chứa

Có ba phương thức để kiểm tra xem chuỗi JavaScript có chứa một ký tự hoặc chuỗi ký tự khác không:

  • includes().
  • indexOf().
  • Biểu thức chính quy (Regex).

Trong hướng dẫn này, chúng tôi sẽ thảo luận về các phương pháp bạn có thể sử dụng để kiểm tra xem chuỗi JavaScript có chứa một chuỗi khác bằng cách sử dụng ba phương pháp này không.

Chuỗi chứa JavaScript: Bao gồm ()

Phương thức JavaScript bao gồm (), được giới thiệu trong ES6, xác định xem một chuỗi có chứa các ký tự bạn đã chuyển vào phương thức hay không. Nếu chuỗi chứa một số ký tự nhất định, phương thức sẽ trả về True True.

Nếu chuỗi được chỉ định không chứa các ký tự mà bạn đang tìm kiếm, bao gồm () sẽ trả về FALLE.

Phương thức Cú pháp cho Phương thức bao gồm () là:

Giá trị chuỗi chuỗi trực tuyến đề cập đến các ký tự mà chúng tôi sẽ tìm kiếm. Từ ngữ của Word đề cập đến các nhân vật mà chúng ta đang tìm kiếm.

Ở đây, một ví dụ về phương thức bao gồm () trong hành động:

let example = "Example String!";
let ourSubstring = "Example";

if (example.includes(ourSubstring)) {
	console.log("The word Example is in the string.");
} else {
	console.log("The word Example is not in the string.");
}

Mã của chúng tôi trả về: Ví dụ từ nằm trong chuỗi.

Trên hai dòng đầu tiên, chúng tôi khai báo hai biến JavaScript. Biến đầu tiên là chuỗi mà chúng tôi muốn tìm kiếm. Thứ hai là phần phụ mà chúng tôi muốn tìm trong chuỗi ban đầu của chúng tôi. Nói cách khác, chúng tôi sẽ tìm kiếm liệu biến đầu tiên có chứa nội dung của biến thứ hai hay không.

Tiếp theo, chúng tôi sử dụng một câu lệnh IF để đánh giá liệu biến ví dụ trên mạng có chứa nội dung của biến của OurSubString hay không.

Nếu ví dụ, thì có chứa từ ví dụ về ví dụ, thì tuyên bố của chúng tôi sẽ đánh giá là đúng. Điều này có nghĩa là câu lệnh Console.log () trong phần thân của câu lệnh IF IF của chúng tôi được chạy. Nếu không, tuyên bố khác của chúng tôi đang được chạy.

Bao gồm () là nhạy cảm với trường hợp, vì vậy nếu chúng tôi thay đổi trường hợp phụ của chúng tôi, thì Sai False sẽ được trả lại.

Bao gồm () đối số thứ hai

Phương thức bao gồm () cho phép bạn chỉ định đối số thứ hai. Đối số thứ hai này là số chỉ mục bao gồm () sẽ bắt đầu tìm kiếm chuỗi con của bạn. Nhân vật đầu tiên sẽ có một chỉ số của 0 0, phần thứ hai 1 1, v.v. Điều này là do danh sách được lập chỉ mục từ số không.

Hãy để kiểm tra xem từ ngữ ví dụ khác xuất hiện sau vị trí chỉ mục 7 trong chuỗi của chúng tôi:

let example = "Example String!";
let ourSubstring = "Example";

if (str.includes(ourSubstring, 7)) {
	console.log("The word Example is in the string.");
} else {
	console.log("The word Example is not in the string");
}

Phương thức bao gồm () trả về vị trí chỉ mục mà tại đó chuỗi của chúng tôi bắt đầu. Mã của chúng tôi trả về ví dụ từ không có trong chuỗi. Mặc dù chuỗi của chúng tôi không bao gồm từ ví dụ, nhưng từ này xuất hiện trước giá trị chỉ mục, 7, đó là khoảng cách giữa ví dụ về ví dụ và chuỗi chuỗi!

Kiểm tra JavaScript nếu chuỗi chứa: indexof ()

Phương thức JavaScript Indexof (), như bao gồm (), kiểm tra xem một chuỗi bao gồm một chuỗi khác. Điều khác nhau là đầu ra từ hai chức năng này.

Khi chúng ta sử dụng phương thức bao gồm (), phương thức trả về boolean: true hoặc false. Indexof () Trả về vị trí chỉ mục bắt đầu của chuỗi con. Hoặc, nếu chuỗi không bao gồm chuỗi con, chúng tôi sẽ nhận được -1.

Hãy cùng nhìn vào cú pháp cho phương pháp này:

Giống như trong ví dụ bao gồm () của chúng tôi, chuỗi chuỗi trực tuyến đề cập đến giá trị mà chúng tôi đang tìm kiếm. Từ ngữ là cụm từ hoặc nhân vật mà chúng tôi đang tìm kiếm.

Ở đây, một ví dụ về indexof () trong javascript:

let example = "Example String!";
let ourSubstring = "Example";

if (example.indexOf(ourSubstring) != 0) {
	console.log("The word Example is in the string.");
} else {
	console.log("The word Example is not in the string.");
}

Mã của chúng tôi trả về: Ví dụ từ nằm trong chuỗi. Chúng tôi đã sử dụng một tuyên bố của người Viking như chúng tôi đã làm trong ví dụ cuối cùng của chúng tôi. Tuyên bố này hiển thị một thông báo cụ thể cho bảng điều khiển tùy thuộc vào việc chuỗi của chúng tôi có chứa chuỗi con hay không.

Chúng tôi kiểm tra xem phương thức indexOf () không trả về -1. Nếu có, tuyên bố khác của người khác được chạy. -1 biểu thị rằng chuỗi của chúng tôi không thể tìm thấy. Mặt khác, mã trong câu lệnh IF IF của chúng tôi được thực thi.

Hãy để sử dụng indexof () trên một chuỗi không chứa một chuỗi con:

let str = "Example String!";
let ourSubstring = "Bananas";

str.indexOf(ourSubstring);

Mã của chúng tôi trả về -1 vì không thể tìm thấy chuỗi con của chúng tôi.

indexof (), giống như phương thức bao gồm (), nhạy cảm trường hợp. Nếu chúng tôi muốn tìm kiếm của chúng tôi bắt đầu ở một giá trị chỉ mục nhất định, chúng tôi có thể sử dụng một đối số khác:

Hướng dẫn how do you check if a word is present in a string in javascript? - làm cách nào để kiểm tra xem một từ có trong chuỗi trong javascript không?

"Karma nghề nghiệp bước vào cuộc sống của tôi khi tôi cần nó nhất và nhanh chóng giúp tôi kết hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi tìm thấy công việc mơ ước của mình phù hợp với các giá trị và mục tiêu của tôi trong cuộc sống!"

Sao Kim, Kỹ sư phần mềm tại Rockbot

let str = "Example String!";
let ourSubstring = "Example";

str.indexOf(ourSubstring, 7);

Bởi vì một trận đấu chính xác không được tìm thấy bắt đầu từ giá trị chỉ mục bảy, mã của chúng tôi trả về -1.

Chuỗi chứa JavaScript: Regex

Chúng ta cũng có thể sử dụng các biểu thức thông thường của JavaScript hoặc Regex, để kiểm tra xem một chuỗi có chứa một chuỗi con không. Regex có thể cực kỳ hữu ích do tính linh hoạt của nó: bạn có rất nhiều quyền kiểm soát đối với những gì bạn tìm kiếm và ở đâu.

Chúng ta có thể sử dụng phương thức regexp.test () để kiểm tra xem một chuỗi có chứa chuỗi con hay không. Đây là một ví dụ:

let str = "Example String!";

/Example/.test(str);

Mã của chúng tôi trả về đúng. Điều này là do bởi vì Jav JavaScript có trong chuỗi ví dụ của chúng tôi.

Regex là mạnh mẽ. Nhược điểm của Regex là việc chạy chậm hơn tùy thuộc vào quy tắc bạn sử dụng. Càng nhiều câu bạn thêm vào các quy tắc Regex của bạn, tìm kiếm của bạn sẽ càng dài.

Nếu bạn thực hiện một tìm kiếm đơn giản và không cần các hàm chuỗi nâng cao, sử dụng bao gồm () hoặc indexof () có thể là một cách tiếp cận tốt hơn. Phương thức regexp.test () không được khuyến nghị cho những người mới bắt đầu chưa học về regex.

Nếu bạn đang tìm cách tìm hiểu thêm về Regex và kiểm tra Regex của mình, hãy xem Regexr.

Sự kết luận

Trong hướng dẫn này, chúng tôi đã thảo luận về những điều cơ bản của các chuỗi trong JavaScript. Sau đó, chúng tôi đã thảo luận về ba cách mà bạn có thể kiểm tra xem một chuỗi có chứa chuỗi con trong javascript: sử dụng bao gồm (), indexof () và regex.

Phương thức bao gồm () được cho là cách phổ biến nhất để kiểm tra xem một chuỗi có chứa chuỗi con hay không. Điều này là do tên của phương pháp là theo nghĩa đen. Rõ ràng bao gồm () cho phép bạn tìm kiếm một chuỗi bên trong một chuỗi khác.

Bạn có muốn tìm hiểu thêm về JavaScript? Chúng tôi đã có bạn được bảo hiểm. Kiểm tra cách tìm hiểu bài viết của JavaScript để biết lời khuyên học tập chuyên gia. Bạn cũng sẽ tìm thấy một danh sách các tài nguyên học tập hàng đầu để giúp bạn nâng cao kiến ​​thức của mình.