Tìm Ký Tự Trong Chuỗi JavaScript (indexOf, LastIndexOf)
Có thể bạn quan tâm
- Viết Chương Trình Javascript Tìm Các Phần Tử Trùng Lặp Trong Mảng
- Viết Chương Trình Java Theo Cho Bài Book Và Author Biết Rằng Mỗi Book được Viết Bởi Nhiều Author
- Viết Chương Trình Kiểm Tra Số Chính Phương Trong Pascal
- Viết Chương Trình Kiểm Tra Số đối Xứng C
- Viết Chương Trình Kiểm Tra Số đối Xứng Pascal
Hướng dẫn cách tìm ký tự trong chuỗi JavaScript. Bạn sẽ học được cách tìm ký tự trong chuỗi JavaScript bằng các phương thức có sẵn như indexOf, lastIndexOf trong bài viết này. Bạn cũng sẽ học được cách tìm vị trí xuất hiện thứ n của ký tự trong chuỗi cho trước bằng một hàm tự viết sau bài học này.
Chúng ta có 3 phương pháp để tìm ký tự trong chuỗi JavaScript như sau:
- Tìm ký tự xuất hiện đầu tiên từ đầu chuỗi JavaScript (Phương thức indexOf )
- Tìm ký tự xuất hiện đầu tiên từ cuối chuỗi JavaScript (Phương thức lastIndexOf)
- Tìm vị trí xuất hiện thứ n của ký tự trong chuỗi JavaScript
Lại nữa, nếu bạn không cần phải tìm vị trí của ký tự trong chuỗi mà chỉ muốn kiểm tra chuỗi chỉ định có tồn tại trong chuỗi ban đầu hay không, hãy sử dụng tới phương pháp includes() nhé.
- Xem thêm: Kiểm tra chuỗi trong javascript (includes)
Tìm ký tự trong chuỗi JavaScript bằng phương thức indexOf
Cú pháp phương thức indexOf trong JavaScript
Chúng ta sử dụng phương thức indexOf trong JavaScript để tìm vị trí ký tự xuất hiện đầu tiên từ đầu chuỗi JavaScript với cú pháp sau đây:
str.indexOf (sub [, index_start] )
Trong đó:
- sub là chuỗi ký tự cần tìm trong chuỗi str, và có phân biệt chữ hoa chữ thường trong sub
- index_start là vị trí index bắt đầu tìm kiếm chuỗi sub trong chuỗi str. Và đối số này có thể được lược bỏ.
Kết quả trả về sẽ là index của vị trí ký tự sub xuất hiện đầu tiên tính từ đầu chuỗi str. Và nếu như sub không tồn tại trong str thì phương thức indexOf trong JavaScript sẽ trả về kết quả bằng -1.
Sau đây hãy cùng xem các ví dụ cụ thể sử dụng phương thức indexOf() để tìm ký tự trong chuỗi JavaScript như sau:
Ví dụ 1:
| console.log("dictionary".indexOf("io"));//> 4 |
ở ví dụ này, chuỗi io xuất hiện đầu tiên tính từ đầu chuỗi dictionary tại vị trí có index là 4, do đó phương thức indexOf trong JavaScript sẽ trả về kết quả là 4.
dictionary ---------- 0123456789Ví dụ 2:
| console.log("Good School".indexOf("oo"));//> 1 |
ở ví dụ thứ hai, chuỗi oo xuất hiện hai lần trong chuỗi Good School, tuy nhiên phương thức indexOf trong JavaScript sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện đầu tiên tính từ đầu chuỗi mà thôi.
Good School ----------- 012345678910Ví dụ 3:
| console.log("Goooood".indexOf("oo"));//> 1 |
ở ví dụ thứ ba, chuỗi oo xuất hiện liên tục 4 lần trong chuỗi Goooood, tuy nhiên phương thức indexOf trong JavaScript sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện đầu tiên tính từ đầu chuỗi mà thôi.
Goooood ------- 0123456Ví dụ 4:
| console.log("Orange".indexOf("aa"));//> -1 |
ở ví dụ thứ tư, chuỗi aa do không trong chuỗi Orange, do đó kết quả trả về sẽ là -1
Lưu ý là JavaScript phân biệt chữ hoa chữ thường khi tìm kiếm ký tự bằng IndexOf, nên bạn cần phải viết chính xác ký tự cần tìm kiếm khi sử dụng phương thức này. Ví dụ:
| let str = 'abc123abc';console.log(str.indexOf('c1'));//> 2console.log(str.indexOf('C1'));//> -1 |
Chỉ định vị trí bắt đầu tìm kiếm ký tự trong phương thức indexOf
Chúng ta có thể sử dụng đối số index_start để chỉ định vị trí bắt đầu tìm kiếm ký tự trong phương thức indexOf.
Khi có index_start, JavaScript sẽ tiến hành tìm kiếm ký tự đã cho trong phạm vi từ index bắt đầu này cho tới cuối chuỗi ban đầu.
Ngược lại, nếu chúng ta lược bỏ đi đối số này thì mặc định index_start sẽ bằng 0 và JavaScript sẽ tiến hành tìm kiếm ký tự đã cho từ đầu đến cuối chuỗi ban đầu.
Ví dụ cụ thể, chúng ta sẽ so sánh kết quả giữa hai phép tìm ký tự trong chuỗi JavaScript bằng indexOf() khi có và không có chỉ định index_start như sau:
| let str = 'abc1def2abc';console.log(str.indexOf('bc'));//> 1console.log(str.indexOf('bc', 5));//> 9 |
Tìm ký tự trong chuỗi JavaScript bằng phương thức lastIndexOf
Cú pháp phương thức lastIndexOf trong JavaScript
Chúng ta sử dụng phương thức lastIndexOf trong JavaScript để tìm vị trí ký tự xuất hiện đầu tiên từ cuối chuỗi JavaScript với cú pháp sau đây:
str.lastIndexOf (sub [, index_start] )
Trong đó:
- sub là chuỗi ký tự cần tìm trong chuỗi str, và có phân biệt chữ hoa chữ thường trong sub
- index_start là vị trí index bắt đầu tìm kiếm chuỗi sub trong chuỗi str. Và đối số này có thể được lược bỏ.
Kết quả trả về sẽ là index của vị trí ký tự sub xuất hiện đầu tiên tính từ cuối chuỗi str. Và nếu như sub không tồn tại trong str thì phương thức lastIndexOf trong JavaScript sẽ trả về kết quả bằng -1.
Sau đây hãy cùng xem các ví dụ cụ thể sử dụng phương thức lastIndexOf() để tìm ký tự trong chuỗi JavaScript như sau:
Ví dụ 1:
| console.log("dictionary".lastIndexOf("io"));//> 4 |
ở ví dụ này, chuỗi io xuất hiện đầu tiên tính từ cuối chuỗi dictionary tại vị trí có index là 4, do đó phương thức lastIndexOf trong JavaScript sẽ trả về kết quả là 4.
dictionary ---------- 0123456789Ví dụ 2:
| console.log("Good School".lastIndexOf("oo"));//> 8 |
ở ví dụ thứ hai, chuỗi oo xuất hiện hai lần trong chuỗi Good School, tuy nhiên phương thức lastIndexOf trong JavaScript sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện đầu tiên tính từ cuối chuỗi mà thôi.
Good School ----------- 012345678910Ví dụ 3:
| console.log("Goooood".lastIndexOf("oo"));//> 4 |
ở ví dụ thứ ba, chuỗi oo xuất hiện liên tục 4 lần trong chuỗi Goooood, tuy nhiên phương thức lastIndexOf trong JavaScript sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện đầu tiên tính từ cuối chuỗi mà thôi.
Goooood ------- 0123456Ví dụ 4:
| console.log("Orange".lastIndexOf("aa"));//> -1 |
ở ví dụ thứ tư, chuỗi aa do không trong chuỗi Orange, do đó kết quả trả về sẽ là -1
Lưu ý là JavaScript phân biệt chữ hoa chữ thường khi tìm kiếm ký tự bằng IndexOf, nên bạn cần phải viết chính xác ký tự cần tìm kiếm khi sử dụng phương thức này. Ví dụ:
| let str = 'abc123abc';console.log(str.lastIndexOf('bc'));//> 7console.log(str.lastIndexOf('Bc'));//> -1 |
Chỉ định vị trí bắt đầu tìm kiếm ký tự trong phương thức lastIndexOf
Chúng ta có thể sử dụng đối số index_start để chỉ định vị trí bắt đầu tìm kiếm ký tự trong phương thức lastIndexOf.
Khi có index_start, JavaScript sẽ tiến hành tìm kiếm ký tự đã cho trong phạm vi từ index bắt đầu này cho tới đầu chuỗi ban đầu.
Ngược lại, nếu chúng ta lược bỏ đi đối số này thì mặc định index_start sẽ bằng 0 và JavaScript sẽ tiến hành tìm kiếm ký tự đã cho từ cuối cho đến đầu chuỗi ban đầu.
Ví dụ cụ thể, chúng ta sẽ so sánh kết quả giữa hai phép tìm ký tự trong chuỗi JavaScript bằng lastIndexOf() khi có và không có chỉ định index_start như sau:
| let str = 'abc1def2abc';console.log(str.lastIndexOf('bc'));//> 9console.log(str.lastIndexOf('bc', 5));//> 1 |
Sự khác biệt giữa IndexOf() và lastIndexOf()
Qua các phân tích ở trên chúng ta có thể nhận ra, hai phương thức IndexOf() và lastIndexOf() tuy cùng được sử dụng để tìm kiếm ký tự trong chuỗi JavaScript, nhưng về bản chất chúng là hai phương thức hoàn toàn đối lập nhau.
Phương thức IndexOf() sẽ bắt đầu tìm kiếm ký tự chỉ định từ đầu chuỗi ban đầu, trong khi phương thức lastIndexOf() thì ngược lại, sẽ bắt đầu tìm kiếm từ vị trí cuối cùng của chuỗi.
Do phạm vi tìm kiếm của hai phương thức này là khác nhau nên kết quả tìm kiếm của chúng cũng khác nhau như sau:
| let str = 'abc123abc';console.log(str.indexOf('bc'));//> 1console.log(str.lastIndexOf('bc'));//> 7 |
Tìm vị trí xuất hiện thứ n của ký tự trong chuỗi JavaScript
Trong JavaScript không tồn tại phương pháp trực tiếp nào để giúp chúng ta tìm vị trí xuất hiện thứ n của ký tự trong chuỗi JavaScript. Do đó chúng ta cần phải tự viết phương pháp riêng để giải quyết bài toán này.
Kiyoshi đã tham khảo và cải tiến ví dụ trên developer.mozilla.org để hoàn thành một hàm có tác dụng tìm vị trí xuất hiện thứ n của ký tự trong chuỗi JavaScript như sau:
| function findString(sub, str, n) { let count=0; for (let i = 0; i < str.length; ++i) { //Cắt chuỗi con từ chuỗi ban đầu có cùng độ dài với chuỗi cần thay thế. //Sau đó so sánh chuỗi con này với chuỗi cần thay thế để tìm ra vị trí chuỗi cần thay thế if (str.substring(i, i + sub.length) == sub) { count += 1; if (count == n){ count = i; break; } } } console.log(count) return count} |
Trong đó các tham số sử dụng trong hàm là
- str: chuỗi ban đầu
- sub: chuỗi cần tìm
- n : vị trí thứ n cần tìm của ký tự sub trong chuỗi str ban đầu.
Ví dụ, chúng ta gọi hàm trên để tìm vị trí xuất hiện thứ n của ký tự o hoặc chuỗi ký tự oo trong chuỗi Good School như sau:
| findString('oo','Good School',2)//> 8findString('o','Good School',2)//> 2 |
Trong hàm có sử dụng tới vòng lặp for và phương thức substring để tìm ra vị trí của chuỗi sub trong chuỗi ban đầu.
- Xem thêm For trong JavaScript và vòng lặp với số lần cụ thể
- Xem thêm Cắt chuỗi trong JavaScript (javascript substring)
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn các cách tìm ký tự trong chuỗi JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/chuoi-trong-javascript/tim-ky-tu-trong-chuoi-javascript/
Từ khóa » Viết Chương Trình Javascript Kiểm Tra Ký Tự đầu Tiên Của Chuỗi Có Phải Là Ký Tự Hoa Hay Không
-
Javascript - Kiểm Tra Xem Ký Tự đầu Tiên Của Chuỗi Có Phải Là Chữ Hoa
-
Viết HOA Ký Tự đầu Của Chuỗi Bằng Javascript - NHANWEB
-
Kiểm Tra Ký Tự Có Tồn Tại Trong Chuỗi JavaScript Hay Không (includes ...
-
Cách Viết Hoa Chữ Cái đầu Tiên Của Chuỗi Trong JavaScript - Tech Wiki
-
Bài 25: Các Hàm Xử Lý Chuỗi Trong Javascript
-
EndsWith() Trong JavaScript | Kiểm Tra Chuỗi Có Kết Thúc Bởi Ký Tự ...
-
Làm Việc Với String Trong Javascript
-
Kiểm Tra String Bắt đầu Với Một Ký Tự Cụ Thể | Học JS
-
Thao Tác Với String Trong JavaScript - NIIT - ICT Hà Nội
-
Các Hàm Xử Lý Chuỗi Trong Javascript (cắt / Tách / Nối Chuỗi ..) - Freetuts
-
Chuỗi String Trong Java
-
Kiểu Dữ Liệu Trong JavaScript - Viblo
-
Chuỗi Trong JavaScript – JavaScript Strings - Lập Trình Từ Đầu
-
Hàm IsMatch, Match Và MatchAll Trong Power Apps - Microsoft Docs