Пишу бота для дословного перевода сообщений с английского на русский. Хотелось бы узнать об общепринятых решениях этой задачи, а не придумывать велосипед как обычно.
let en = "qwertyuiop[]asdfghjkl;'zxcvbnm,./`QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?~&"
let ru = "йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё?";
let alphabet = {}
for( let i = 0; i < en.length; i++ ){
alphabet[en[i]] = ru[i];
} /* Так легче сделать объект, чем вручную всё записывать.
Окончательный вариант уже можно прописать в виде обычного объекта. */
console.log( JSON.stringify( alphabet ) );
let jin = document.getElementById('jin');
let jout = document.getElementById('jout');
jin.addEventListener('input', function(){
jout.innerHTML = toRussianStr( this.value );
});
function toRussianStr(str){
return str.replace(/\S/g, function(match){
/* \S в регулярных выражениях - совпадает с любым символом кроме пробельных.
* Совпадение передается функции, через переменную match
* А функция возвращает перевод, если такой есть...
* || ИЛИ тот же символ - красным, если он не найден.
*/
return alphabet[match] || '<span style="color: red;">' + match + '</span>';
});
}
jout.innerHTML = toRussianStr(jin.value);
<textarea id="jin">ghbdtn vbh!</textarea>
<div id="jout"></div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть плагин для клонирования полей формы, в котором индекс в атрибуте name прирастает при каждом клонировании, те
Есть select, который используется с плагином select2И мне надо использовать свои атрибуты
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение