2015-12-11 1 views
0

У меня есть следующая строка:Как игнорировать escape-символы в javascript?

var str = '\x27'; 

у меня нет контроля над ним, так что я не могу записать его как «\\ x27», например. Всякий раз, когда я печатаю его, я получаю:

' 

с 27 года апостол. Когда я звоню .length на него, он дает мне 1. Это, конечно, правильно, но как я могу относиться к нему, как не избежали строки и распечатать буквально

\x27 

и дать мне длину 4?

+0

Duplicate: http://stackoverflow.com/questions/6184453/how-to-make-javascript-ignore-escape-character –

+0

Нет, это не так. Предлагаемое решение в этом вопросе: «Вам нужно избегать обратной косой черты, т. Е. Использовать \\ вместо просто \:», и я прямо указывал прямо во второй строке моего вопроса, что я не могу этого сделать, так что это другой вопрос для другой контекст. – pistacchio

+0

Зачем вам это нужно? - 'str'' '' 'и ничего больше, не имеет значения, как это было назначено. Если вы хотите напечатать 4, вам нужно будет применить логический тест; 'len = str ==" '"? 4: str.length' - Или вы спрашиваете, как получить escape-последовательность из char? –

ответ

1

Я не уверен, если вы должны делать то, что вы пытаетесь сделать, но это, как это работает:

var s = '\x27'; 
var sEncoded = '\\x' + s.charCodeAt(0).toString(16); 

s является строкой, которая содержит один символ, апостроф. Код символа в виде шестнадцатеричного числа равен 27.

0

После задания var str = '\x27'; вы не можете определить, откуда взялось содержимое str. Невозможно определить, был ли задан строковый литерал, или же строковый литерал содержит escape-последовательность. Все, что у вас есть, - это строка, содержащая один апострофный символ (код UIC0001 Unicode). Первоначальное назначение могло бы быть

var str = '\x27'; // or 
var str = "'"; // or 
var str = String.fromCodePoint(3 * 13); 

Нет простого способа рассказать.

При этом ваш вопрос выглядит как XY problem. Почему вы пытаетесь напечатать \x27 в первую очередь?

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