String converter
Convert string to different sequences
HTML
<p><textarea id="inputText"></textarea><p>
<p><input type="checkbox" id="onlyNonASCII" class="onlyNonASCII" value="1" />Convert only non-ASCII charachters</p>
<p><button id="doIt">do it</button></p>
<h3>result</h3>
<h5>Decimal NCRs</h5>
<code id="Decimal-NCR"></code>
<h5>Unicode escape</h5>
<code id="Unicode-escape"></code>
CSS
#inputText {
width: 90%;
}
code {
display:block;
padding: 4px;
background-color: #EFEFEF;
}
JavaScript
var convert = {
toUnicodeEscape : function(str, onlyNonAscii){
// Каждый символ строки отдельный элемент в массиве
var ret = str.split("")
// Обрабатываем каждый символ функцией
.map(function(item, i, arr){
// Возвращает Unicode значение символа.
// Возвращаемое значение всегда меньше 65536.
// См.: http://javascript.ru/String/charCodeAt
if(onlyNonAscii && item.charCodeAt(0) > 31 && item.charCodeAt(0) < 127){
return item;
}
var charCode = item.charCodeAt(0),
pad = "0000";
// Преобразуем Unicode значение в Hexadecimal и дополняем нулями
return "\\u" + (pad + charCode.toString(16)).slice(-4);
})
// Склеиваем элементы массива в строку
.join("");
return ret;
},
toDecimalNCR : function(str){
return str.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
return '&#'+i.charCodeAt(0)+';';
});
}
};
function toUnicodeEscape(str){
var ret = str.split("")
.map(function(item, i, arr){
if(item.charCodeAt(0) > 31 && item.charCodeAt(0) < 127){
return item;
}
var charCode = item.charCodeAt(0),
pad = "0000";
return "\\u" + (pad + charCode.toString(16)).slice(-4);
})
.join("");
return ret;
}
$('#doIt').click(function () {
var str = $('#inputText').val(),
onlyNonASCII = document.querySelector('.onlyNonASCII:checked') ? true : false;
$('#Decimal-NCR').html(convert.toDecimalNCR(str).replace(/&/gim, '&'));
alert(toUnicodeEscape(str));
$("#Unicode-escape").html(toUnicodeEscape(str));
});