Mô tả bài toán
Chuyển mỗi chữ cái trong chuỗi thành vị trí trong bảng chữ cái (a=1, b=2... z=26), bỏ qua ký tự đặc biệt và khoảng trắng, nối bằng dấu phẩy.
Ví dụ minh họa
const str = 'hello man';
const charPosition = str => {
str = str.split('');
const arr = [];
const alpha = /^[A-Za-z]+$/;
for (let i = 0; i < str.length; i++) {
if (str[i].match(alpha)) {
const num = str[i].charCodeAt(0) - 96;
arr.push(num);
}
}
return arr.toString();
};
console.log(charPosition(str));
Kết quả
"8,5,12,12,15,13,1,14"
Cách viết hiện đại
const charPosition = str =>
str.toLowerCase()
.replace(/[^a-z]/g, '')
.split('')
.map(c => c.charCodeAt(0) - 96)
.join(',');
Giải thích
charCodeAt(0)trả về mã ASCII- 'a' = 97, trừ 96 ra 1
- Regex
/[^a-z]/gloại bỏ non-alphabetic