2016-02-19 3 views
0

Я получаю строку с японскими символами внутри, представленными в цифровом символьном формате, и их нужно преобразовать в правильный японский символ для отображения.Преобразование числовой символьной ссылки на фактический символ

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

var regex_num_set = /&#\d+;/g, 
var strJapanese = "Here is some Japanese text: みなさん、" 

var charSet = str.match(REGEX_NUM_CHARSET); 
if(charSet && charSet.length > 0) { 
    charSet.forEach(function(c) { 
     str = str.replace(c, String.fromCharCode(parseInt(c.replace(/[&#;]/g, '')))); 
    }) 
}; 

Это делает работу, но есть ли более эффективный способ определить регулярное выражение и сделать простую замену одной строки я написал следующее JavaScript?

+0

Если это работает, почему бы не опубликовать это на [Codereview.se]? –

+0

Я колебался между ними и возвращался к stackoverflow, потому что я прошу задать технический вопрос о том, как определить альтернативное регулярное выражение. – Lee

ответ

0

Если вы хотите заменить, то почему бы не использовать replace?

var regex_num_set = /&#(\d+);/g; 
 
var strJapanese = "Here is some Japanese text: みなさん、" 
 

 

 
strJapanese = strJapanese.replace(regex_num_set, function(_, $1) { 
 
    return String.fromCharCode($1); 
 
}); 
 

 

 
document.write('<pre>'+JSON.stringify(strJapanese,0,3));

Обратите внимание, что этот код не обрабатывает шестигранные побегов (&#xMMM) и "астральной плоскости" символы (как &#127812;). Для использования в производстве я бы посоветовал вам оглянуться на lib, там работает правильно.

Смежные вопросы