Это мой подход.
Создание массива с объектами следующего класса.
class Emoji {
constructor(emojiSymbol, textCode) {
this.symbol = symbol; // :-)
this.textCode = textCode; // F60A
}
}
Я предполагаю, что текст пользователя будет сохранен в виде строки при его вводе.
Относительно ---> Теперь я хочу расширить вход в чат, чтобы при вводе, например :-), он мгновенно изменился на ?
Вы должны отслеживать ввод пользователя. Чтобы быть более точным c, вы должны создать функцию, которая будет проверять каждое слово , которое пишет пользователь. Если он найден внутри массива символов Emoji , он удалит символ 1019 * и заменит его на текстовый код .
- функция будет включена, если слово содержит 3 или более символов.
- функция перестанет работать после нажатия пользователем пробела или если будет более 5 или 6 последовательных символов, зависит от размера символов для смайликов.
Пример строки -> Я собираюсь работать :-)
1) Будет проверено I .
Поскольку слово меньше трех символов, функция не будет включена
2) Будет проверено am . То же, что и 1.
3) Будет проверяться идущий .
Когда пользователь введет третий символ " i ", функция будет включен. Это сохранит индекс символа «g». Индекс можно рассчитать: Общая длина текущего текстового сообщения - 3.
. Он займет goi и начнет искать внутри массива объектов Emoji символ , если он находит соответствующий, он заменит его textCode внутри класса Emoji.
Пользователь вводит четвертый символ, который начнет искать "goin" ......
4) Он проверит от до .
То же, что 1 и 2.
5) Будет проверено работа
Так же, как 3.
6) Будет проверено : -)
То же, что и 3, с той разницей, что он найдет объект внутри массива с соответствующим символом и заменит его на textCode .
Относительно -> Интересная вещь в WhatsApp Web заключается в том, что когда я нажимаю клавишу удаления, смайлик возвращается к :-). Как они это делают? Есть ли расширение? Было бы здорово, если бы мне не нужно расширение.
Когда пользователь нажимает кнопку удаления, вы должны проверить назад до указанного c количества последовательных символов. если они соответствуют смайликам, вы заменяете textCode символом.
Пример String -> Я собираюсь работать F60A
Я предполагаю, что :-) соответствует к этому текстовому коду -> F60A.
Функция будет искать в обратном направлении. Он сохранит конечный индекс, который будет индексом " A " (F60A), а начальный индекс будет "&". Если он найдет объект с тем же textCode , он заменит его на символ .