Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Ánh xạ chuỗi sang số thứ tự chữ cái trong JavaScript

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]/g loại bỏ non-alphabetic