Как заменить символы Unicode в следующем сценарии с помощью javascript? Используя javascript, я хочу заменить символы Unicode оболочкой в соответствии с их стилем. Если возможно, включите в регулярное выражение ряд символов Юникода ([a-z]) для стилей, отличных от обычных.
- input =
abc𝑢𝑣𝑤𝑥𝐚𝐛𝐜𝐝𝒇𝒈𝒉𝒊
- ожидаемый результат =
<span class="regular>abc</span><i> 𝑢𝑣𝑤𝑥</i><b>𝐚𝐛𝐜𝐝</b><b><i>𝒇𝒈𝒉𝒊</i></b>
text = 'abc𝑢𝑣𝑤𝑥𝐚𝐛𝐜𝐝𝒇𝒈𝒉𝒊';
text = text.replace(/([a-z]+)/,'<span class="regular">$1</span>');
text = text.replace(/([𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧]+)/,'<i>$1</i>');
text = text.replace(/([𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳]+)/,'<b>$1</b>');
text = text.replace(/([𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛]+)/,'<b><i>$1</i></b>');
2 ответа
Я думаю, это просто вопрос поиска диапазонов Unicode, которые вы хотите заменить, и нормализация (разложение) строки:
let text = 'abc𝑢𝑣𝑤𝑥𝐚𝐛𝐜𝐝𝒇𝒈𝒉𝒊';
text = text.replace(/[\u{1d41a}-\u{1d433}]+/gu, s => `<b>${s.normalize('NFKD')}</b>`);
text = text.replace(/[\u{1d44e}-\u{1d467}]+/gu, s => `<i>${s.normalize('NFKD')}</i>`);
text = text.replace(/[\u{1d482}-\u{1d49b}]+/gu, s => `<b><i>${s.normalize('NFKD')}</i></b>`);
console.log(text);
Я не уверен, решит ли это вашу проблему, но вы можете использовать escape-функцию, она в основном используется в структурах URL-адресов. Пример использования:
<script type="text/javascript">
var string = "ğ, ç, ş, ü, ö, ı";
var convert = escape(string);
document.write (string);
document.write (convert);
</script>
Результат:
Ğ, ç, ş, ü, ö, ı
% u011F% 2C% 20% E7% 2C% 20% u015F% 2C% 20% FC% 2C% 20% F6% 2C% 20% u0131
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.