Экранирование символов в java

Экранирование символов в java

Как мы уже видели, обратная косая черта используется для обозначения классов символов, например d . Это специальный символ в регулярных выражениях (как и в обычных строках).

Есть и другие специальные символы, которые имеют особое значение в регулярном выражении. Они используются для более сложных поисковых конструкций. Вот полный перечень этих символов: [ ^ $ . | ? * + ( ) .

Не надо пытаться запомнить этот список: мы разберёмся с каждым из них по отдельности, и таким образом вы выучите их «автоматически».

Экранирование символов

Допустим, мы хотим найти буквально точку. Не «любой символ», а именно точку.

Чтобы использовать специальный символ как обычный, добавьте к нему обратную косую черту: . .

Это называется «экранирование символа».

Круглые скобки также являются специальными символами, поэтому, если нам нужно использовать именно их, нужно указать ( . В приведённом ниже примере ищется строка "g()" :

Если мы ищем обратную косую черту , это специальный символ как в обычных строках, так и в регулярных выражениях, поэтому мы должны удвоить её.

Косая черта

Символ косой черты ‘/’ , так называемый «слэш», не является специальным символом, но в JavaScript он используется для открытия и закрытия регулярного выражения: /. шаблон. / , поэтому мы должны экранировать его.

Вот как выглядит поиск самой косой черты ‘/’ :

С другой стороны, если мы не используем короткую запись /. / , а создаём регулярное выражение, используя new RegExp , тогда нам не нужно экранировать косую черту:

new RegExp

Если мы создаём регулярное выражение с помощью new RegExp , то нам не нужно учитывать / , но нужно другое экранирование.

Например, такой поиск не работает:

Аналогичный поиск в примере выше с /d.d/ вполне работал, почему же не работает new RegExp("d.d") ?

Причина в том, что символы обратной косой черты «съедаются» строкой. Как вы помните, что обычные строки имеют свои специальные символы, такие как
, и для экранирования используется обратная косая черта.

Читайте также:  Разрешить adobe flash player в chrome

Вот как воспринимается строка «d.d»:

Строковые кавычки «съедают» символы обратной косой черты для себя, например:

  • – становится символом перевода строки,
  • u1234 – становится символом Юникода с указанным номером,
  • …А когда нет особого значения: как например для d или z , обратная косая черта просто удаляется.

Таким образом, new RegExp получает строку без обратной косой черты. Вот почему поиск не работает!

Чтобы исправить это, нам нужно удвоить обратную косую черту, потому что строковые кавычки превращают \ в :

Никак не пойму как экранируются кавычки при выводе на консоль

5 ответов 5

Знак экранирует спецсимволы, такие как n , r , " , и т.д.. этот знак говорит нам о том, что мы не закрываем первую кавычку "It’s , а печатаем в текст кавычку. В результате чего получаем текст It’s Windows path: "C:

P.s. в путьях не хватает знака , чтобы экранировать опять же

UPD

Линк на Escape символы, требующие экранирование . Спасибо за это @ArtemKonovalov

package com.javarush.test.level03.lesson06.task04 ;
/* Экранирование символов
Про экранирование символов в Java читайте в дополнительном материале к лекции.
Вывести на экран следующий текст — две строки:
It’s Windows path: "C:Program FilesJavajdk1.7.0in"
It’s Java string: "C:\Program Files\Java\jdk1.7.0\bin"
*/
public class Solution
<
public static void main ( String [] args )
<
// напишите тут ваш код
System . out . println( " It’s Windows path: " C: \ Program Files \ Java \ jdk1.7.0 \ bin " " );
System . out . println( " It’s Java string: \" C: \\ Program Files \\ Java \\ jdk1.7.0 \\ bin \" " );
>
>
  • © 2020 GitHub, Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Ссылка на основную публикацию
Adblock detector