2014-01-26 4 views
0

Я хотел бы преобразовать строку в шестнадцатеричный с javascript только символы.Преобразование ascii в hex в javascript

Так что, если у меня есть строка:

http://www.mydomain.com

результат преобразования будет:

HTTP% 3A% 2F% 2Fwww% 2Emydomain% 2Ecom

Обратите внимание на% вместо 0x

+0

Итак, вы хотите конвертировать * некоторые * ASCII символы в шестнадцатеричные? Какой из символов? (Полный список) –

+0

Не можете ли вы просто заковать и заменить символы без символов ASCII шестнадцатеричным кодом? Вероятно, проще с регулярным выражением также ... –

+0

Что случилось с 'encodeURIComponent()'? –

ответ

0

Вы можете использовать регулярное выражение:

var url = 'http://example.com'; 
var escaped = url.replace(/[^A-Za-z0-9]/g, function(match) { 
    var hex = match.charCodeAt(0).toString(16); 
    return '%' + (hex.length < 2 ? '0' + hex : hex); 
}); 
console.log(escaped); // => "http%3a%2f%2fexample%2ecom" 

[^A-Za-z0-9] означает «что-либо, что НЕ является буквой или цифрой» (^ означает, что при размещении в начале класса символов).

При передаче функции на replace она будет вызывать эту функцию (с совпадением как аргумент) вместо замены статической строкой.

charCodeAt получит код символа указанного символа (по аргументу), поэтому charCodeAt(0) получает код символа первого символа.

toString принимает опционный базовый аргумент, определяющий, какую базу вы хотите, а база 16 - шестнадцатеричная.

И, наконец, (hex.length < 2 ? '0' + hex : hex) добавит начальный ноль в том случае, если полученный шестнадцатеричный символ равен только одной цифре.

+0

Работал как очарование. Спасибо дружище – Jason

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