Как преобразовать эти символы?

#javascript #react-native #character-encoding

#javascript #react-native #кодировка символов

Вопрос:

Я создаю приложение в React, которое получает определенную HTML-страницу и преобразуется в страницу в React, но когда a помещает некоторую строку в <Text> , эти символы не преобразуются:

введите описание изображения здесь

Представление amp;#8212; является .

Как называются эти символы? Есть ли способ в React преобразовать эти символы в соответствующий им текст?

Ответ №1:

Эти символы называются объектами символов HTML. Многие математические, технические символы и символы валюты отсутствуют на обычной клавиатуре.

Если имя объекта не существует, вы можете использовать номер объекта, десятичную или шестнадцатеричную ссылку.

Быстрый обходной путь для одной известной вам html-сущности:

     <Text>
      {yourText.replace(/amp;#8212;/gi, '-')}
    </Text>
  

Вы могли бы использовать этот модуль npm для декодирования текста перед визуализацией:

Пример для нескольких объектов html

 const re = /amp;[^s]*;/gi;
const allHtmlEntities = [];
while ((match = re.exec(youtText)) != null) {
  const htmlEntity = yourText.substring(match.index, 7);
  if (allHtmlEntities.indexOf(htmlEntity) === -1) {
    allHtmlEntities.push(htmlEntity);
  }
}

const entities = new Entities();

for (let i = 0; i < allHtmlEntities.length; i  ) {
  const decodedValue = entities.decode(allHtmlEntities[i]);
  yourText = yourText.replace(new RegExp(allHtmlEntities[i], 'g'), decodedValue);
}
  

Комментарии:

1. @Syed к сожалению, они не интерпретируются автоматически react-native … итак, я думаю, тогда нам понадобится какой-то regex способ перехватить все эти элементы HTML-СИМВОЛОВ и использовать npm, который я упомянул в ответе, для его преобразования