Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Заменить буквы в слове JS

#javascript


Не могу понять почему не работает replace, задача с freecodecamp(дана фраза, в словах
которой, буквы из первой половины алфавита нужно заменить на буквы второй половины
алфавита соответственно т.е А=N, B=O и т.д), все решения связанные с этой задачей были
через charCodeAt(),можно ли вообще решить эту задачу через replace?

function rot13(str) { 
   const alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   const half1 = alfabet.split('');
   // ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"]
   const half2 = half1.splice(0,13);
//    ["N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
   const myStr = str.split(' ');
   for(let myShifrWords of myStr){
       for(let i=0; i


Ответы

Ответ 1



function rot13(str) { var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var map = Object.create(null); for (var q = 0; q < alphabet.length; ++q) { map[alphabet[q]] = alphabet[(q + 13) % alphabet.length]; } return str.replace(/./g, m => map[m] || m); } console.log(rot13("SERR CVMMN!"));

Ответ 2



А можно ещё и так. function replace(str) { return str.replace(/[A-Z]/gi, function(letter) { var c = letter.charCodeAt(0); return String.fromCharCode((c - 65 >= 13) ? c - 13 : c + 13); }); } console.log(replace("SERR CVMMN!")); Короткое описание: берём букву из нужного слова, смотрим в какой она части алфавита (в первой или второй), если первая - по коду ASCII таблицы прибавляем 13 (кол-во букв в половине алфавита) и получаем "параллельную" букву, и наоборот, если буква из второй части алфавита.

Комментариев нет:

Отправить комментарий