Olushon
@Olushon

Почему не работает метод .replace()?

Помогите найти ошибку в коде. В строке каждую английскую букву надо заменить на номер ее позиции в алфавите. Остальные символы игнорировать и не возвращать.

var str = '';
function alphabetPosition(text) {
     str = text.toUpperCase();
     for (var i = 0; i < str.length; i++) {
          if ( (parseFloat(str.charCodeAt(i)) > 64) && parseFloat((str.charCodeAt(i) < 91))) {
               var letter = text.charAt(i);
               var sym = new RegExp(letter, 'g');
               str = str.replace(sym, str.charCodeAt(i) - 64);
          }
     }
 return str;
};


Срабатывает только .toUpperCase(), помогите, пожалуйста!
  • Вопрос задан
  • 454 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Жуть какая.
function alphabetPosition(text) {
  return text.toUpperCase().replace(/([A-Z])/g, function(char) { 
    return char.charCodeAt(0) - 64;
  });
}
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function alphabetPosition(text) {
     var str = text.toUpperCase();
     var result = '';
     for (var i = 0; i < str.length; i++) {
         var code = str.charCodeAt(i);
         var letter = text.charAt(i);
         if (64 < code && code < 91) {
             result += code - 64;
         } else {
             result += letter;
         }
     }
     return result;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы