function fg(str) {
let ru = {
'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd',
'е': 'e', 'ё': 'e', 'ж': 'j', 'з': 'z', 'и': 'i',
'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o',
'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u',
'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh',
'щ': 'shch', 'ы': 'y', 'э': 'e', 'ю': 'u', 'я': 'ya',
'ъ': 'ie', 'ь': '', 'й': 'i'
};
let newString = [];
return [...str].map(l => {
let latL = ru[l.toLocaleLowerCase()];
if (l !== l.toLocaleLowerCase()) {
latL = latL.toLocaleUpperCase();
} else if (latL === undefined) {
if (latL === '-') {
latL = l;
} else{
return '';
}
}
return latL;
}).join('');
}
console.log(fg("ЬьЯ- -- -"));
YA
function stre(text) {
return text.replace(
/([а-яё])|([\s_])|([^a-z\d])/gi,
function (all, ch, space, words, i) {
if (space || words) {
return space ? '-' : '';
}
var code = ch.charCodeAt(0),
next = text.charAt(i + 1),
index = code == 1025 || code == 1105 ? 0 :
code > 1071 ? code - 1071 : code - 1039,
t = [
'yo', 'a', 'b', 'v', 'g', 'd', 'e', 'zh',
'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh',
'shch', '', 'y', '', 'e', 'yu', 'ya'
],
next = next && next.toUpperCase() === next ? 1 : 0;
return ch.toUpperCase() === ch ? next ? t[index].toUpperCase() :
t[index].substr(0, 1).toUpperCase() +
t[index].substring(1) : t[index];
}
);
};
function stre(text) {
return text.replace(
/([а-яё])|([\s_])|([^a-z\d])/gi,
function (all, ch, space, words, i) {
if (space || words) {
return space ? '-' : '';
}
var code = ch.charCodeAt(0),
next = text.charAt(i + 1),
index = code == 1025 || code == 1105 ? 0 :
code > 1071 ? code - 1071 : code - 1039,
t = [
'yo', 'a', 'b', 'v', 'g', 'd', 'e', 'zh',
'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh',
'shch', '', 'y', '', 'e', 'yu', 'ya'
],
next = next && next.toUpperCase() === next ? 1 : 0;
return ch.toUpperCase() === ch ? next ? t[index].toUpperCase() :
t[index].substr(0, 1).toUpperCase() +
t[index].substring(1) : t[index];
}
);
};
function rus_to_latin ( str ) {
var ru = {
'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd',
'е': 'e', 'ё': 'e', 'ж': 'j', 'з': 'z', 'и': 'i',
'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o',
'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u',
'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh',
'щ': 'shch', 'ы': 'y', 'э': 'e', 'ю': 'u', 'я': 'ya',
'ъ': 'ie', 'ь': '', 'й': 'i'
}, n_str = [];
for ( var i = 0; i < str.length; ++i ) {
n_str.push(
ru[ str[i] ]
|| ru[ str[i].toLowerCase() ] == undefined && str[i]
|| ru[ str[i].toLowerCase() ].replace(/^(.)/, function ( match ) { return match.toUpperCase() })
);
}
return str.split('')
.map(l => ru[l] || ru[l.toLowerCase()] && ru[l.toLowerCase()].toUpperCase() || l)
.join('')
}
console.log(rus_to_latin( 'ьЬЬЬь' ));