Как можно заменять нечитабельные символы?
у меня есть текст например: "ЌŘĮŜŤÃĹЌĮĹĹ",мне нужно чтобы код перевёл его в "Kristalkill",можно ли как-то это сделать без ввода вручную символов жсон,и подальшим реплейсом,или если есть уже готовая база с такими символами(Которую можно скачать)
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Ваша строчка состоит из букв с диакритиками, причём диакритики не отдельно от букв, а объединённые в один символ. Чтобы оставить буквы, нужно два шага:
- Декомпозиция (отделение букв и диакритик) при помощи
String.prototype.normalize(). - Удаление небуквенных символов при помощи Unicode Property Escapes.
Потом уже можно заняться исправлением регистра.
(UPD: добавлено сохранение цифр и эмодзи, см. комментарии)
const str = "ЌŘĮŜŤÃĹЌĮĹĹ123\u{231A}\u{2194}\u{FE0F}\u{1F469}\u{1F469}\u{1F3FF}";
console.log(str);
const cleaned = str
.normalize("NFD")
.replace(/[^\p{Letter}\p{Number}\p{Emoji_Modifier_Base}\p{Emoji_Modifier}\p{Emoji_Presentation}\p{Emoji}\uFE0F]/gu, '');
console.log(cleaned);
const name = cleaned[0].toUpperCase() + cleaned.slice(1).toLowerCase();
console.log(name);