Viết hoa ký tự bất kỳ trong chuỗi
Chào các bạn
Trong bài viết này mình sẽ hướng dẫn các bạn viết hoa ký tự bất kỳ trong chuỗi.
Viết chức năng
1function editString(str, position = 0) { 2 if (!str && typeof str !== "string") { 3 throw new SyntaxError(`Đầu vào ${str} không phải là chuỗi`); 4 } 5 6 if (position < 0) { 7 position = 0; 8 } 9 10 if (str.length < position) { 11 throw new Error( 12 `Position ${position} lớn hơn độ dài chuỗi ${str.length}` 13 ); 14 } 15 16 let kyTu = str[position]; 17 18 let ketQua = str.replace(kyTu, (math, index) => { 19 if (index === position) { 20 return math.toUpperCase(); 21 } else { 22 return math; 23 } 24 }); 25 26 console.log(ketQua); 27} 28 29editString("hồ quang trí", -1); // Hồ quang trí 30// editString("hồ quang trí", 0) ; // Hồ quang trí 31// editString("hồ quang trí", 34); // Uncaught Error: Position 34 lớn hơn độ dài chuỗi 12 32// editString([], 34); // Uncaught SyntaxError: Đầu vào object không phải là chuỗi
Cách chạy
Khi chúng ta gọi editString("hồ quang trí", -1) chức năng thực hiện hành động như sau.
- Chạy vào body chức năng
- Kiểm tra if (!str && typeof str !== "string")
- Nếu true thì ném ra lỗi và chức năng dừng. Và thoát khỏi chức năng
- Nếu false thì chức năng chạy xuống tiếp.
- Kiểm tra if (position < 0)
- Nếu true thì cập nhật position = 0
- Kiểm tra str.length < position
- Nếu true thì ném ra lỗi và chức năng dừng. Và thoát khỏi chức năng
- Nếu false thì chức năng chạy xuống tiếp.
- Gán kyTu = str[position]
- Gán ketQua = str.replace(...)
- Chức năng replace(kyTu, (math, index) => {...}) thực hiện 2 tác vụ
- kyTu chính là str[position]
- (math, index) => {...}) chính là chức năng. Trong chức năng khi replace gọi nó chạy
- Nếu if (index === position) thì chúng ta biến ký tự thành hoa và trả về
- Ngược lại thì trả về math
- Chức năng replace(kyTu, (math, index) => {...}) thực hiện 2 tác vụ
- Chúng ta log kết quả
Nhược điểm là chức năng replace này phải chạy từ đầu đến cuối chuỗi.
Chuyển sang cắt chuỗi và nối chuỗi
1function editString(str, position = 0) { 2 if (typeof str !== "string") { 3 throw new SyntaxError(`Đầu vào ${typeof str} không phải là chuỗi`); 4 } 5 6 // Nếu < 0 7 if (position < 0) { 8 let ketQua = str[0].toUpperCase() + str.slice(1); 9 console.log(ketQua); 10 return; 11 } 12 13 if (str.length < position) { 14 throw new Error( 15 `Position ${position} lớn hơn độ dài chuỗi ${str.length}` 16 ); 17 } 18 19 // Nếu lớn hơn 1 20 let ketQua = 21 str.slice(0, position) + 22 str[position].toUpperCase() + 23 str.slice(position + 1); 24 25 console.log(ketQua); 26} 27 28editString("hồ quang trí", 1); // hỒ quang trí 29 30/** 31 * "hồ quang trí".slice(0, 1) trả về "h" 32 * "hồ quang trí"[1] trả về "ồ".toUpperCase() trả về "Ồ" 33 * "hồ quang trí".slice(1 + 1) trả về " quang trí" 34 * Cộng chuỗi thành "hỒ quang trí" 35 */
Tổng kết
Trong bài viết này mình đã nói qua về chức năng. Tuy không hoàn hảo nhưng cũng đủ để các bạn mới học tìm hiểu.
- chuỗi
- ký tự
- string
Các bài viết liên quan
Sắp xếp các từ trong chuỗi
Theo thứ tự tăng hoặc giảm. Áp dụng phương pháp có sẵng.Giải ThuậtĐếm số lượng các ký tự Hoa có trong chuỗi
Cùng nhau rèn luyện tư duy với chuỗi nhé. Đơn giản thôi.Giải ThuậtViết chương trình in ra tất cả các số lẽ `0 <= 100` trừ số 5, 17, 33
Bài tập căn bản. Cùng nhau giải quyết.Giải Thuật