Нужна помощь в конвертировании текстовой переменной в цифровую
Нужна помощь в конвертировании текстовой переменной в цифровую Например есть переменная CАF... нужно конвертировать в A-1 C-3 F-6... Т.е должно получится 316
javascript node.js
Ответы (3 шт):
Автор решения: Vadim
→ Ссылка
Почему пользователи паттерны должны сами разгадывать? это що передача интуыцыя?
const alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; // дефайним массив данных, полученный взломом гугла по адресу 314 кабинета
const convert=(a)=>{
if(typeof a !== 'string')return false; // если не строка, то нафиг
let r = '';
for(let k=0; k < a.length; k++){
r += alphabet.indexOf(a[k])+1; // ищем в алпхабете букаву
}
return +r; // возвращаем цыфоры
};
// ввод вывод (и мы опять играем в...)
let before = 'CAF'; // твои букавы
let result = convert(before);
console.log(result);
Автор решения: Qwertiy
→ Ссылка
Неправильно ты хочешь, но ладно:
console.log(+"CAF".replace(/./g,m=>parseInt(m,36)-9))
Автор решения: OPTIMUS PRIME
→ Ссылка
Удачно совпало, что parseInt умеет читать числа до 36-ричной системы, где после цифры 9, идут латинские буквы-цифры, A → 10, B → 11, ..., Z → 35
console.log( bubu("ACF") );
console.log( bubu("aaz") );
function bubu( str ) {
return str.split("").map(e => parseInt(e, 36) - 9).join("");
}
Проблема только в том, что после преобразования, Z → 26 уже не отличишь от BF → 26, поэтому нужно добавить какой-то разделитель в join. Или, "0" перед всеми числами ниже 10.