Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi làm đối số đầu tiên và một ký tự phân tách làm đối số thứ hai.
Chuỗi đầu tiên đảm bảo là chuỗi camelCased. Hàm nên chuyển đổi trường hợp của chuỗi bằng cách tách các từ bằng ký tự phân tách được cung cấp làm đối số thứ hai.
Ví dụ:
Nếu chuỗi đầu vào là:
const str = 'thisIsAString'; const separator = '_';
Thì chuỗi đầu ra nên là:
const output = 'this_is_a_string';
Ví dụ
Dưới đây là mã nguồn:
const str = 'thisIsAString'; const separator = '_'; const separateCase = (str = '', separator = ' ') => { const arr = []; let left = 0, right = 0; for(let i = 0; i < str.length; i++){ const el = str[i]; const next = str[i + 1]; if((el.toUpperCase() === el && el.toUpperCase() !== el.toLowerCase()) || !next){ right = i + Number(!next); }; if(left !== right){ const sub = str.substring(left, right).toLowerCase(); arr.push(sub); left = right; }; }; return arr.join(separator); }; console.log(separateCase(str, separator));Kết quả
Đầu ra trên console:
this_is_a_string
Cách đơn giản hơn: str.replace(/([A-Z])/g, separator + '$1').toLowerCase() (cần xử lý trường hợp chữ cái đầu).