Как получить представление эмодзи с помощью нативного js? - PullRequest
3 голосов
/ 09 мая 2019

Я добавил emoji? в html-код, написав его dec-представление внутри div - "?";Как мне получить цифровое представление ??Мне нужно обработать строку, содержащую и текст, и смайлики, а смайлики должны быть представлены в цифровом представлении.Итак, если у меня есть строка, содержащая - "привет мир ?" , ее следует заменить на "привет мир ?;"

document.onreadystatechange = function(){
if(document.readyState == "complete"){
       document.getElementById("area").addEventListener("keypress" ,      public_mode);
   }
}

function public_mode(event){
	var key = event.key;
  if(key === "Enter") {
     event.preventDefault();
     sendMessage(this);
   }
}

function sendMessage(area){
	console.log(area.innerHTML);
	area.innerHTML = "";
}
#area {
    padding: 5px;
	width: 170px;
	border:1px solid black;
    }
<div id = "area" contenteditable="true">How to get it in dec - &#128512;</div>

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Вы можете получить номер символа по .codePointAt():

console.log(`&#${ ("?".codePointAt(0)) };`)

Это (в сочетании с циклом) может решить вашу проблему:

function encodeEmoji(str){
    var output=""
    for(x of str){
        //don't encode common characters
        if(x.codePointAt(0) > 9727)
            output += `&#${ (x.codePointAt(0)) };`
        else
            output += x
    }
    return output
}

 console.log(encodeEmoji("hello world ??????"))
0 голосов
/ 09 мая 2019

Вы можете использовать codePointAt (возвращает неотрицательное целое число, которое является значением кодовой точки Unicode).

let emoji = area.innerHTML.split('- ')[1];
console.log(emoji.codePointAt(0));
...