ввод одной косой черты в javascript

#javascript #string

#javascript #строка

Вопрос:

Я хочу сгенерировать строку «» в Javascript, но, похоже, не смог этого сделать. Если я напишу только «», я получу ошибку времени компиляции, потому что » само по себе экранировано. Но если я сделаю «\», я получу две косые черты в качестве выходных данных. Итак, как мне сгенерировать строку с одной косой чертой?

Комментарии:

1. Возможно, я неправильно понимаю, но косая черта (обычно просто «косая черта») — это / , вы, кажется, используете обратную косую черту?

2. @DavidThomas Возможно, я неправильно понял термин. Но каким бы ни было имя, я хочу сгенерировать «» в качестве выходных данных

3. Вы пробовали "\" ? Потому что это должно сработать (оно экранирует управляющий символ).

4. Как вы думаете, почему "\" это приведет к двум обратным косым чертам? (ПРИМЕЧАНИЕ: не косые черты)

5. @user3727864 Если выходные данные отформатированы в формате JSON, для этого также требуется экранирование обратной косой черты, и они будут записаны как таковые. Однако управляющая последовательность все равно должна представлять один символ в значении. Пример: console.log('\'.length); // 1

Ответ №1:

Символ / является косой чертой. Символ является обратной косой чертой.

Обратная косая черта используется в качестве управляющего символа для строк в JavaScript и в JSON. Некоторым символам требуется устранить неоднозначность строковых литералов. Эта строка неоднозначна:

 'He's going to the park'
  

Есть три одинарных кавычки ' , и анализатор не знает, что является частью строки, а что нет. Мы можем использовать обратную косую черту для экранирования символа, который мы хотим представить, ' вместо закрытия строкового литерала (также ' ).

 'He's going to the park'
  

Теперь, если обратная косая черта имеет особое значение, как мы представляем буквальный символ обратной косой черты в строке? Просто экранируя обратную косую черту с помощью обратной косой черты .

 'C:\DOS\command.com' // In memory this is:  C:DOScommand.com
  

Помните, что это экранирование предназначено только для текстового представления строк в коде или JSON. Код проанализирован, и строки в памяти соответствуют ожидаемым, при этом все экранирования разрешены до соответствующих символов.

Теперь ваш вопрос касается JSON и предполагает, что это неверно:

Я пишу » как ключ к пакету JSON. Результат будет примерно таким "READY_TO_PRINT_DATE":"/\Date(1403911292:981000 420)\/" .

JSON требует того же экранирования, что и в JavaScript, и по той же причине… чтобы удалить двусмысленность из строк. JSON-версия строки /\Date(1403911292:981000 420)\/ — это то, как вы правильно представляете фактическую строку /Date(1403911292:981000 420)/ .

Я надеюсь, что это поможет прояснить некоторые из ваших недоразумений.

Ответ №2:

вы можете избежать косой черты:

 myvar = "\";