Π Π°Π±ΠΎΡ‚Π° с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто сопряТСна с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ очистки строк ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… символов. Одной ΠΈΠ· самых распространСнных Π·Π°Π΄Π°Ρ‡ являСтся ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² JSON, ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ ΠΈΠ· Excel ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Π΅Π±-сСрвисов. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ обработанная строка ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам парсинга ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: ΠΎΡ‚ простых встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ быстро ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² запросах, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ массивы строк ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с экранированными символами. ПониманиС этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ситуациСй, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ приходят Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ "Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", Π° трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ просто Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ стандартная функция Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ срабатываСт ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² кирилличСской раскладкС ΠΈ ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ символы.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ очистки Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ способ удалСния символов β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для простых случаСв, ΠΊΠΎΠ³Π΄Π° структура строки прСдсказуСма, Π° ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΌΠΈ символами. Алгоритм дСйствия прост: ΠΌΡ‹ замСняСм Ρ†Π΅Π»Π΅Π²ΠΎΠΉ символ Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку.

Однако Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Unicode сущСствуСт нСсколько Π²ΠΈΠ΄ΠΎΠ² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. ΠŸΡ€ΡΠΌΡ‹Π΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (") ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ (') Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅ всСго, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Β«Π΅Π»ΠΎΡ‡ΠΊΠΈΒ» (Β« ΠΈ Β») ΠΈΠ»ΠΈ английскиС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ-Π»Π°ΠΏΠΊΠΈ. Если Π²Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ символов, Π΄Π°Π½Π½Ρ‹Π΅ останутся Π½Π΅ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ.

Для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° рСкомСндуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π·Π°ΠΌΠ΅Π½. Π‘Π½Π°Ρ‡Π°Π»Π° удаляСм прямыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ°Ρ€Π½Ρ‹Π΅. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт очистку строки ΠΎΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° распространСнных символов обрамлСния. Код ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = """Π’ΠΎΠ²Π°Ρ€"" «Артикул»";

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, """", "");

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, "'", "");

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, """", "");

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, """, "");

ИспользованиС Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эта функция ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½Π° Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшниС. Если ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста (ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ названия), ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ смысл.

πŸ’‘

Если ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста ΠΊΠ°ΠΊ смысловыС Π·Π½Π°ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΠΌΠ° "Π‘Ρ€Π°Ρ‚"), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ слоТныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ удалСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… символов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π° ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ строки, сохранив ΠΈΡ…, Ссли ΠΎΠ½ΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² сСрСдинС тСкста. Π­Ρ‚ΠΎ типичная ситуация ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· CSV-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² API, Π³Π΄Π΅ строковыС значСния ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ. ΠŸΡ€ΠΎΡΡ‚Π°Ρ Π·Π°ΠΌΠ΅Π½Π° здСсь Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ всС вхоТдСния символа.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний символ строки. Если ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ, ΠΌΡ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ строку, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ эти ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π’ ΠΊΠΎΠ΄Π΅ 1Π‘ это рСализуСтся Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ€Π΅Π΄ (ΠΈΠ»ΠΈ Left/Right Π² английской вСрсии синтаксиса), которая позволяСт Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ подстроку.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая удаляСт ΠΏΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ с ΠΊΡ€Π°Π΅Π². Она провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ символа ΠΈ Π΄Π»ΠΈΠ½Ρƒ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ строк ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа.

Ѐункция Π£Π΄Π°Π»ΠΈΡ‚ΡŒΠšΡ€Π°ΠΉΠ½ΠΈΠ΅ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ(Π—Π½Π°Ρ‡ Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

Если ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ "";

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1);

ПослСднийБимвол = ΠŸΡ€Π°Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1);

Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

Если (ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = """ И ПослСднийБимвол = """)

Π˜Π›Π˜ (ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = "Β«" И ПослСднийБимвол = "Β»") Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 2, Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ - 2);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€ΠΎΠΊΠ°;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сохраняСт Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ строки. НапримСр, тСкст "Имя "АлСксСй" Ѐамилия" прСвратится Π² Имя "АлСксСй" Ѐамилия, Ρ‡Ρ‚ΠΎ являСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. ИспользованиС Π‘Ρ€Π΅Π΄ ΠΈ Π›Π΅Π² позволяСт Π³ΠΈΠ±ΠΊΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ позициями срСза.

β˜‘οΈ Алгоритм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… символов

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

ИспользованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для слоТной очистки

Когда структура Π΄Π°Π½Π½Ρ‹Ρ… становится Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎΠΉ, Π° ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… мСстах ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ экранированными, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят рСгулярныС выраТСния. Π’ 1Π‘ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ слоТныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ поиска.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… конструкций, ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ спСцифичСскиС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов. НапримСр, шаблон ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ экранированы ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм. Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ JSON Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π±Π΅Π· использования встроСнного парсСра.

Бинтаксис рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² 1Π‘ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ стандартному PCRE. Для поиска Π»ΡŽΠ±Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ класс. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° дСмонстрируСт, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½ шаблон вмСсто Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

ВСкст = "Бписок: ""Π―Π±Π»ΠΎΠΊΠΎ"", ""Π“Ρ€ΡƒΡˆΠ°"", ""Π‘Π»ΠΈΠ²Π°""";

Π¨Π°Π±Π»ΠΎΠ½ = "[""«»']"; // Класс символов: двойная, лСвая Π΅Π»ΠΎΡ‡ΠΊΠ°, правая Π΅Π»ΠΎΡ‡ΠΊΠ°, апостроф

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС(Π¨Π°Π±Π»ΠΎΠ½);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π³Π’Ρ‹Ρ€.Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкст, "");

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² компактности ΠΊΠΎΠ΄Π° ΠΈ гибкости. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ шаблон, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ случаи. Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с рСгулярными выраТСниями Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов, Ρ‡Π΅ΠΌ простыС строковыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: РСгулярныС выраТСния Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ шаблона ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ экранирования Π² зависимости ΠΎΡ‚ контСкста строки запроса Π² ΠΊΠΎΠ΄Π΅ 1Π‘.
ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π Π΅Π³Π’Ρ‹Ρ€

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° рСгулярными выраТСниями ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ тСкста (ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Ρ‹) ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅ врСмя. Для цикличСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Π² рСгистрС Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ SQL.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с JSON ΠΈ XML

БоврСмСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² 1Π‘ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½ΠΎ связана с ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… JSON ΠΈ XML. Π’ этих Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ слуТСбными символами, ΠΎΠ±Ρ€Π°ΠΌΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ значСния строк. Частая ошибка Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ· сырой JSON-строки Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ парсингом.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт встроСнныС срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ: Π§Ρ‚Π΅Π½ΠΈΠ΅JSON ΠΈ Π—Π°ΠΏΠΈΡΡŒJSON. Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ автоматичСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, экранированиС ΠΈ структуру Π΄Π°Π½Π½Ρ‹Ρ…. Π ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΠ· JSON-строки часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ синтаксиса ΠΈ ошибкС Π§Ρ‚Π΅Π½ΠΈΠ΅JSON.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля ΠΈΠ· JSON, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² структуру ΠΈΠ»ΠΈ соотвСтствиС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ. БистСма сама Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΡƒΠΆΠ΅ Π±Π΅Π· ΠΎΠ±Ρ€Π°ΠΌΠ»ΡΡŽΡ‰ΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Ручная чистка трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² искаТСнном Π²ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ простого тСкста, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ JSON.

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ сравнСния ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² зависимости ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° источника:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Риск ошибок ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
ВСкстовый Ρ„Π°ΠΉΠ» (CSV) Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ / Π Π°Π·Π±ΠΎΡ€ строки Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ Высокая
HTTP-ΠΎΡ‚Π²Π΅Ρ‚ (JSON) Π§Ρ‚Π΅Π½ΠΈΠ΅JSON Низкий БрСдняя
Π‘ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° Excel Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ / ΠŸΠ°Ρ€ΡΠ΅Ρ€ Низкий БрСдняя
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ тСкст РСгулярныС выраТСния Высокий Низкая

ИспользованиС спСциализированных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π§Ρ‚Π΅Π½ΠΈΠ΅JSON Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π·Π°Π΄ΡƒΠΌΠ°Π½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ API. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Β«ΠΏΠΎΡ‡ΠΈΠ½ΠΈΡ‚ΡŒΒ» строку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ часто ΡΠΎΠ·Π΄Π°ΡŽΡ‚ большС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Π΅ΠΌ Ρ€Π΅ΡˆΠ°ΡŽΡ‚.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² 1Π‘?
JSON
XML
YAML
CSV
Π’Π°Π±Π»ΠΈΡ†Ρ‹ Excel

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с экранированными символами

Π’ строках 1Π‘, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования, сущСствуСт понятиС экранирования. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строковой константы записываСтся ΠΊΠ°ΠΊ Π΄Π²Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ подряд (""). ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ строки ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ одинарная, Π½ΠΎ Π² ΠΊΠΎΠ΄Π΅ трСбуСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС.

Иногда Π² Π΄Π°Π½Π½Ρ‹Ρ… Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²ΠΈΠ΄Π° \" (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°). Π­Ρ‚ΠΎ стандартный способ экранирования Π² JSON ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… тСкстовых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ…. Если Π²Ρ‹ просто ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, оставив слэш, строка Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ лишниС символы. НСобходимо ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ связку символов Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘.

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… случаСв ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрНайти для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° содСрТимого. Если Π² строкС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ, Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ случая с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ экранированной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Если БтрНайти(ВСкст, "\"") > 0 Π’ΠΎΠ³Π΄Π°

// ЗамСняСм ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ удаляСм

ВСкст = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкст, "\"", """");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π’Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² интСрфСйсС 1Π‘ ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС Π² памяти. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ записано Π² Ρ„Π°ΠΉΠ»Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ просмотра ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π² консоль для Ρ‚ΠΎΡ‡Π½ΠΎΠΉ диагностики.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ мСссСндТСров Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ 1Π‘, Β«ΡƒΠΌΠ½Ρ‹Π΅Β» ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π° стандартныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ мСняСт Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символов.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросах ΠΈ консоли

Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ строки ΠΎΡ‚ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ нСпосрСдствСнно Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, особСнно ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²ΠΎ внСшниС систСмы. Π’ языкС запросов 1Π‘ Π½Π΅Ρ‚ прямой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ удалСния символов, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ StrReplace Π² SQL Server, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ.

Один ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠŸΠžΠ”Π‘Π’Π ΠžΠšΠ Π² сочСтании с условиями, Ссли ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ всСгда находятся Π² фиксированных позициях. Однако это Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎ. Π‘ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² Ρ†ΠΈΠΊΠ»Π΅ Π½Π° сторонС сСрвСра ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π³Π΄Π΅ доступны всС возмоТности встроСнного языка.

Если Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² Π²ΠΈΠ΄Π΅ строк с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ постоянно, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ структуры ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ «грязных» Π΄Π°Π½Π½Ρ‹Ρ… услоТняСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы. Π›ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ записи (ΠΏΡ€ΠΈΠ΅ΠΌΠΊΠΈ) Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ»ΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.

Для Ρ€Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ консоль запросов ΠΈΠ»ΠΈ внСшнюю ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ ΠΊ Π±Π°Π·Π΅. Π­Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ скрипт очистки массово Π±Π΅Π· измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ массовыС обновлСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ создания Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ.

πŸ’‘

Π›ΡƒΡ‡ΡˆΠ°Ρ стратСгия Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ β€” ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΡ… появлСния Π² Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΌ настройки ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π² систСму.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ссли ΠΎΠ½ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ½Ρ†Π΅ строки?

Π’ этом случаС нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° равСнство ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго символа. НСобходимо ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ: Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ β€” ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°, ΠΎΡ‚Ρ€Π΅Π·Π°Π΅ΠΌ Π΅Π³ΠΎ. Π—Π°Ρ‚Π΅ΠΌ провСряСм послСдний символ Π½ΠΎΠ²ΠΎΠΉ строки ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΎΡ‚Ρ€Π΅Π·Π°Π΅ΠΌ Π΅Π³ΠΎ. Ѐункция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ здСсь Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ всС вхоТдСния.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ удаляСт ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ· строки, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ· Π²Π΅Π±-сСрвиса?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ экранирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, \") ΠΈΠ»ΠΈ это Π½Π΅ стандартныС символы ASCII, Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Unicode-символы (Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ спСцифичСскиС Π·Π½Π°ΠΊΠΈ цитирования). ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символ ΠΈΠ· ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ нСпосрСдствСнно Π² ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΡ‡Π½ΠΎΠΌ совпадСнии ΠΊΠΎΠ΄Π° символа.

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ прямо Π² ΠΏΠΎΠ»Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

Π”Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΏΠΎ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ очистки ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘Ρ‚Ρ€ Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ» Π‘Ρ‚Ρ€.ПолС = Π£Π΄Π°Π»ΠΈΡ‚ΡŒΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ(Π‘Ρ‚Ρ€.ПолС); ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;. Π­Ρ‚ΠΎ стандартная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² 1Π‘.

ВлияСт Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° строк?

Π”Π°, влияСт. ИспользованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ Π½Π° большом массивС Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ очистку Π½Π° сторонС Π‘Π£Π‘Π”, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΠΈΠ±ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ сразу Π² ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.