HomeLập trìnhJavaScriptCách sử dụng...

Cách sử dụng RegExp để xác nhận kết thúc Chuỗi trong JavaScript


bởi Catherine Vassant (hay còn gọi là Codingk8)

Sử dụng hàm tạo Regexp ?️

0*YLruZvgbUfHmlITM
Ảnh của Justin Luebke trên Bapt

Bài viết này dựa trên Kịch bản thuật toán cơ bản của freeCodeCamp “Xác nhận kết thúc”.

Thử thách này liên quan đến việc kiểm tra xem Chuỗi có kết thúc bằng một chuỗi ký tự cụ thể hay không.

Trong bài viết này, tôi sẽ giải thích cách giải quyết vấn đề này thử thách sử dụng RegExp.

Khía cạnh thú vị của giải pháp này là sử dụng hàm tạo RegExp để tạo RegExp cụ thể mà bạn cần để kiểm tra các Chuỗi được truyền dưới dạng đối số.

Thử thách thuật toán

Kiểm tra xem một chuỗi (đối số đầu tiên, str) kết thúc bằng chuỗi đích đã cho (đối số thứ hai, target).

Thách thức này có thể được giải quyết bằng .endsWith()phương pháp, được giới thiệu trong ES2015. Nhưng với mục đích của thử thách này, chúng tôi muốn bạn sử dụng một trong các phương thức chuỗi con JavaScript để thay thế.

Các trường hợp thử nghiệm được cung cấp

confirmEnding("Bastian", "n")nên trả về đúng.

confirmEnding("Congratulation", "on")nên trả về đúng.

confirmEnding("Connor", "n")nên trả về sai.

confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")nên trả về sai.

confirmEnding("He has to give me a new name", "name")nên trả về đúng.

confirmEnding("Open sesame", "same")nên trả về đúng.

confirmEnding("Open sesame", "pen")nên trả về sai.

confirmEnding("Open sesame", "game")nên trả về sai.

confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")nên trả về sai.

confirmEnding("Abstraction", "action")nên trả về đúng.

Không sử dụng phương pháp tích hợp .endsWith()để giải quyết thách thức.

1. Ý tưởng đầu tiên hoàn toàn không hiệu quả

Nếu, giống như tôi, bạn là người yêu thích RexExp, nỗ lực đầu tiên của bạn có thể là thử giải quyết thử thách với mã bên dướivà nó sẽ không hoạt động.

Đọc thêm  Objetos en JavaScript: Una guía para principiantes

Lý do là, với cú pháp này, hàm test() sẽ tìm Chuỗi “đích” cụ thể chứ không phải “đích” dưới dạng một biến được truyền dưới dạng đối số.

Nếu chúng ta quay lại các trường hợp thử nghiệm của mình, những trường hợp trả về “false” sẽ vượt qua, nhưng không có trường hợp nào trả về “true” vượt qua, điều này khá dễ đoán.

0*eIBStwAQ1PDwZkrJ
Ảnh của Pablo Lancaster Jones trên Bapt

2. Giải quyết thách thức bằng cách tạo RegExp cụ thể mà bạn cần với hàm tạo RegExp

Để sử dụng một RegExp sẽ “hiểu” rằng đối số “mục tiêu” là một biến chứ không phải “mục tiêu” Chuỗi, bạn phải tạo một RegExp do taylor tạo bằng cách sử dụng hàm tạo RegExp.

Và, trước khi tiếp tục, chúng ta hãy quay lại một phút và xem xét những gì chúng ta muốn kiểm tra: đối số “mục tiêu” phải là phần cuối của đối số “str”. Điều này có nghĩa là RegExp của chúng tôi phải kết thúc bằng ký tự “$”.

Bây giờ, chúng ta có thể giải quyết thách thức này trong ba bước

Bước 1 – Tạo một biến thêm “$” vào cuối đối số “đích”, sử dụng phương thức concat() trong trường hợp này.

Bước 2 – Sử dụng hàm tạo RegExp và toán tử “new” để tạo đúng RexExp với biến trên.

Bước 3 – Trả về kết quả của hàm test().

Và điều này vượt qua tất cả các bài kiểm tra trường hợp một cách đẹp đẽ?

Điều này có thể được cấu trúc lại trong hai dòng như thế này

Ghi chú: vì không có trường hợp thử nghiệm nào ngụ ý kiểm tra cách viết hoa của các chữ cái nên không cần sử dụng cờ “i”.

Đọc thêm  Cách tạo một trang web danh mục đầu tư bằng HTML, CSS, JavaScript và Bootstrap 5

String.prototype.concat() trong MDN

RegExp.prototype.test() trong MDN

Hàm tạo RegExp trong MDN

Cụm từ thông dụng trong freeCodeCamp

Các giải pháp khác cho thách thức này

Các thử thách “Nhận gợi ý” gợi ý một giải pháp bằng cách sử dụng phương thức slice().

Bạn có thể tìm thấy hai cách khác để giải quyết thách thức này, một với phương thức chất nền() và cái khác với phương thức kết thúcWith(), được giải thích bởi Sonya Moisset trong bài viết này.

Giải pháp RegExp đặc biệt này có thể cũng giúp bạn giải quyết thử thách Viết mã thuật toán trung gian freeCodeCamp “Tìm kiếm và thay thế”.

Cảm ơn bạn đã đọc!

Nếu bạn thích bài viết này, hãy “vỗ tay” bao nhiêu lần tùy thích và chia sẻ nó để giúp người khác tìm thấy nó. Điều đó có thể làm cho ngày của họ.

Nếu bạn có một phản ứng/câu hỏi/gợi ýhãy chắc chắn để lại một bình luận dưới đây. Tôi sẽ được vui mừng để đọc từ bạn!

Bạn cũng có thể liên lạc và/hoặc theo dõi tôi trên Twitter.





Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status