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

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΠ· строки Π² 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. НапримСр, ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ CSV Ρ„Π°ΠΉΠ»ΠΎΠ², Π³Π΄Π΅ поля часто Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ парсингС JSON структур Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ обработанная строка ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам записи Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ символы ΠΌΠ΅ΡˆΠ°ΡŽΡ‚.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы очистки строки ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… символов. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… символов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов строк. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… раскладках ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΠΌΠ΅Π½Ρ‹ символов

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

Однако стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² тСкстС ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ " ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ типографских Β«Π΅Π»ΠΎΡ‡Π΅ΠΊΒ» ΠΈΠ»ΠΈ "Π»Π°ΠΏΠΎΠΊ". Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ содСрТится Π² Π΄Π°Π½Π½Ρ‹Ρ…, придСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого Ρ„Π°ΠΊΡ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ символов останСтся Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎΠΉ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ строку ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Π²ΠΈΠ΄ΠΎΠ² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° порядок дСйствий: ΠΌΡ‹ создаСм Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ исходныС Π΄Π°Π½Π½Ρ‹Π΅, Ссли это Π²Π°ΠΆΠ½ΠΎ для Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ""тСкста"" Π² 'ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ…' ΠΈ Β«Π΅Π»ΠΎΡ‡ΠΊΠ°Ρ…Β»";

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, "'", "");

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, "Β«", "");

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, "Β»", "");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚);

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИспользованиС мноТСствСнных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ создаСт Π½ΠΎΠ²Ρ‹Π΅ строки Π² памяти ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… (ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ строк) это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ замСдлСнию Ρ€Π°Π±ΠΎΡ‚Ρ‹.

πŸ’‘

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

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

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

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования рСгулярного выраТСния для очистки строки. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° рСгулярного выраТСния, пСрСдавая Π² Π½Π΅Π³ΠΎ исходный тСкст ΠΈ строку Π·Π°ΠΌΠ΅Π½Ρ‹.

ВСкст = "Π”Π°Π½Π½Ρ‹Π΅: ""123"", '456', Β«789Β»";

РСгулярка = Новый РСгулярноСВыраТСниС("[\""'"«»]");

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚ = РСгулярка.Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкст, "");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚);

Π’ шаблонС ["'"«»] ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ символов. Π›ΡŽΠ±ΠΎΠΉ символ ΠΈΠ· этого Π½Π°Π±ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ унивСрсалСн ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ: Ссли появится Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Π΅Π³ΠΎ достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ скобок.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ экранирования Π² 1Π‘

Π’Π½ΡƒΡ‚Ρ€ΠΈ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² 1Π‘ двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° экранируСтся ΠΏΡƒΡ‚Π΅ΠΌ удвоСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΊΠΎΠ΄Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для обозначСния ΠΎΠ΄Π½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строки рСгулярного выраТСния.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива строк ΠΈ Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Часто Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π½Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π² коллСкциях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Массив ΠΈΠ»ΠΈ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх элСмСнтов. ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам, поэтому Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксный доступ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π’Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Если ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ очистки. Если ΠΆΠ΅ Ρ‚ΠΈΠΏ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΡ‹ пройдСмся ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ очистки ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ полю. Π­Ρ‚ΠΎ стандартная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

  • πŸ“‚ Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ копию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ, Ссли ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ допустимо.
  • πŸ” ΠžΡ€Π³Π°Π½ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Для КаТдого ΠΈΠ»ΠΈ Для Π½ = 1 По ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ.
  • 🧹 ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ очистки ΠΊ полю строки Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°.
  • πŸ’Ύ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π½ΠΎΠ²ΡƒΡŽ ячСйку ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†. Если Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит дСсятки тысяч строк, использованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² простой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ тСсты Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… вашСго прСдприятия.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°
Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Высокая Низкая Низкая
РСгулярныС выраТСния БрСдняя Высокая БрСдняя
ΠŸΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Низкая Максимальная Высокая
ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JSON Высокая БпСцифичная Низкая
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ очистки строк Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ
РСгулярныС выраТСния
Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
НС знаю/Π”Ρ€ΡƒΠ³ΠΎΠ΅

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JSON ΠΈ XML

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… JSON ΠΈΠ»ΠΈ XML ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ слуТСбными символами, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ значСния. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ· сырой строки JSON ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ структуру Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ сСриализации ΠΈ дСсСриализации.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π§Ρ‚Π΅Π½ΠΈΠ΅JSON ΠΈ Π—Π°ΠΏΠΈΡΡŒJSON. Они автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ экранированиС символов. Если ваша Ρ†Π΅Π»ΡŒ β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ чистоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· JSON-строки, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‘ Π² структуру Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, БоотвСтствиС, Массив), Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π½ΡƒΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Оно ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π· ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

Если ΠΆΠ΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ "Π±ΠΈΡ‚Ρ‹ΠΉ" JSON, Π³Π΄Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ расставлСны Π½Π΅Π²Π΅Ρ€Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈΠ»ΠΈ строковых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ сдСлаСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ для парсСров. Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρ‹.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ удаляйтС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ· JSON-строки простой Π·Π°ΠΌΠ΅Π½ΠΎΠΉ, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π½Π° 100%, Ρ‡Ρ‚ΠΎ это Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ синтаксис. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС Π§Ρ‚Π΅Π½ΠΈΠ΅JSON ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°.

πŸ’‘

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (JSON, XML) всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ срСдства чтСния ΠΈ записи, Π° Π½Π΅ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² Ρ„Π°ΠΉΠ»Ρ‹

Одной ΠΈΠ· самых частых Π·Π°Π΄Π°Ρ‡ являСтся Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы ΠΈΠ»ΠΈ bank-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. Π€ΠΎΡ€ΠΌΠ°Ρ‚ CSV (Comma Separated Values) часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСкстовыС поля, содСрТащиС Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ, Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Однако ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ сторона ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· Π½ΠΈΡ….

ΠŸΡ€ΠΈ использовании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ВСкстовыйДокумСнт ΠΈΠ»ΠΈ Π—Π°ΠΏΠΈΡΡŒΠ’Π΅ΠΊΡΡ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Если Π²Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ строку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ записью, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ очистку Π·Π°Ρ€Π°Π½Π΅Π΅. Если ΠΆΠ΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ для экспорта, настройки ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ автоматичСски.

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

  • πŸ“ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ трСбования ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ систСмы ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Ρ„Π°ΠΉΠ»Π°.
  • βš™οΈ НастройтС Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ строк Π² соотвСтствии со стандартом.
  • 🧹 ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ сборкой строки.

Иногда ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² самих ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, Π° Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. НСкоторыС тСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, хотя Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΡ… Π½Π΅Ρ‚. ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² "чистом" Π²ΠΈΠ΄Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· HEX-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ простой Π±Π»ΠΎΠΊΠ½ΠΎΡ‚.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»Π°

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

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросах ΠΈ Π‘ΠšΠ”

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

Π§Π°Ρ‰Π΅ всСго Π² запросах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция Π—ΠΠœΠ•ΠΠ˜Π’Π¬. Бинтаксис Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ встроСнному языку, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹ с экранированиСм ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста запроса. Если ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обозначСния строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Π² запросС, ΠΈΡ… экранированиС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π² тСкстС запроса:

ВЫБРАВЬ

Π—ΠΠœΠ•ΠΠ˜Π’Π¬(Π’Π°Π±Π»ΠΈΡ†Π°.ПолС, """", "") КАК ΠžΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠ΅ΠŸΠΎΠ»Π΅

Π˜Π—

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК Π’Π°Π±Π»ΠΈΡ†Π°

ИспользованиС очистки Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ сразу ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Однако для слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² Ρ†ΠΈΠΊΠ»Π΅ послС получСния Π΄Π°Π½Π½Ρ‹Ρ….

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² языкС запросов 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…, Ρ‡Π΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π² памяти. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΏΠ»Π°Π½ выполнСния запроса ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ записСй.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² запросС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ?

Π’ тСкстС запроса строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΡŒ строки запроса, Π΅Ρ‘ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сама строка запроса Π² ΠΊΠΎΠ΄Π΅ 1Π‘ Ρ‚ΠΎΠΆΠ΅ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, получаСтся каскадноС экранированиС.

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

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈ послСднюю ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ ΠΈΠ· строки?

Для этого нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ. НуТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний символ строки функциями Π›Π΅Π² ΠΈ ΠŸΡ€Π°Π². Если ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ€Π΅Π΄ для получСния подстроки Π±Π΅Π· ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… символов. Π­Ρ‚ΠΎ часто трСбуСтся ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ строк Π²ΠΈΠ΄Π° "Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅".

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС удалСния ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ появились вопросы ΠΈΠ»ΠΈ пустыС мСста?

ВСроятно, Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½ΠΎ ΠΈ сосСдниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π»ΠΈΠ±ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Ρ‹Π»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ вмСсто ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ использовались ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы-Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ символа Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ КодБимвола.

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²ΠΎ всСх полях Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ?

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

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ строку, Ссли ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ экранированы ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм?

Если строка содСрТит ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²ΠΈΠ΄Π° \", сначала Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ \" Π½Π° ", Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ссли это трСбуСтся. Или сразу Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ \" Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ.

ВлияСт Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 1Π‘?

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