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

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

ПониманиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структуры строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… являСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с индСксами символов часто приводят ΠΊ критичСским сбоям выполнСния ΠΊΠΎΠ΄Π°, особСнно Ссли строка оказываСтся пустой. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим основныС сцСнарии ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ сразу Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками Π² 1Π‘

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

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСзопасной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π³Π΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ условиС для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ ошибок:

  • πŸ” Π‘Π½Π°Ρ‡Π°Π»Π° провСряСм, Π½Π΅ пуста Π»ΠΈ строка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°.
  • βœ‚οΈ Если Π΄Π»ΠΈΠ½Π° большС нуля, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ подстроку ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ прСдпослСднСго символа.
  • πŸ›‘οΈ Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈΠ»ΠΈ исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ сбоя.
  • πŸ’Ύ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ присваиваСм Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для дальнСйшСго использования Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π›Π΅Π² являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π²ΠΎ всСх вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, начиная с самых Ρ€Π°Π½Π½ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ лСгаси-ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ написании ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΎΠ±Ρ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π°Π·Π°Ρ….

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для удалСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ символа Π² любом мСстС строки, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ послСдний Π·Π½Π°ΠΊ, Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ»ΠΈ запятыС.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘ΠΎΠΊΡ€Π› для удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²

Частным, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ случаСм удалСния послСднСго символа являСтся ситуация, ΠΊΠΎΠ³Π΄Π° этим символом являСтся ΠΏΡ€ΠΎΠ±Π΅Π». Π’ языкС 1Π‘ сущСствуСт спСциализированная функция Π‘ΠΎΠΊΡ€Π›, прСдназначСнная ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² справа ΠΎΡ‚ строки. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния читаСмости ΠΊΠΎΠ΄Π° ΠΈ часто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ ручная ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Π΄Π»ΠΈΠ½Ρƒ.

Если ваша Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² очисткС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² справочников ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ случайных ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌ, использованиС Π‘ΠΎΠΊΡ€Π› становится стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ. Ѐункция автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ строки любой Π΄Π»ΠΈΠ½Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пустыС, Ρ‡Ρ‚ΠΎ избавляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Если Π² ΠΊΠΎΠ½Ρ†Π΅ строки находится табуляция, Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΉ символ, функция оставит Π΅Π³ΠΎ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ тСкста.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π‘ΠΎΠΊΡ€Π› Π½Π΅ удаляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΊΠΎΠ½Ρ†Π° строки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ символ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ (CR) ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки (LF), Ссли ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ систСмы.

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

Π Π°Π±ΠΎΡ‚Π° с раздСлитСлями ΠΈ спСцифичСскими символами

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

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

Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ удалСния послСднСго символа, Ссли это запятая:

Если ΠŸΡ€Π°Π²(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, 1) = "," Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π›Π΅Π²(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°) - 1);

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°;

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

Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ явно провСряСт Ρ‚ΠΈΠΏ послСднСго символа ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ послСдний Π·Π½Π°ΠΊ являСтся Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послСднСй Π±ΡƒΠΊΠ²ΠΎΠΉ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ Π² Π½ΠΎΠΌΠ΅Ρ€Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°).

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния символов Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Ѐункция Π›Π΅Π² ΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°
Ѐункция Π‘ΠΎΠΊΡ€Π›
РСгулярныС выраТСния
Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых строк ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций

ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² 1Π‘ опрСдСляСтся Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π²Π΅Π΄Π΅Ρ‚ сСбя Π² Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ситуациях. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ символ ΠΈΠ· пустой строки β€” классичСская ошибка, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ задания. ΠŸΡ€ΠΈ написании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ сцСнарий, ΠΊΠΎΠ³Π΄Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.

Π›ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ построСна Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пустая строка ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ пустой послС примСнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ. Π­Ρ‚ΠΎ сохраняСт ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ примСнСния.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ повСдСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями:

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ строка ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Бтатус
"ΠŸΡ€ΠΈΠ²Π΅Ρ‚!" Π›Π΅Π²(Π‘Ρ‚Ρ€, Π”Π»ΠΈΠ½Π°-1) "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" УспСх
"" (пустая) Π›Π΅Π²(Π‘Ρ‚Ρ€, Π”Π»ΠΈΠ½Π°-1) Ошибка выполнСния Π‘Π±ΠΎΠΉ
"Π”Π°Π½Π½Ρ‹Π΅ " Π‘ΠΎΠΊΡ€Π›(Π‘Ρ‚Ρ€) "Π”Π°Π½Π½Ρ‹Π΅" УспСх
"" (пустая) Π‘ΠΎΠΊΡ€Π›(Π‘Ρ‚Ρ€) "" (пустая) УспСх

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

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° бСзопасности ΠΊΠΎΠ΄Π°

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с коллСкциями Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

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

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

ВЫБРАВЬ

Π›Π΅Π²(Π’Π°Π±Π»ΠΈΡ†Π°.ΠŸΠΎΠ»Π΅Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π’Π°Π±Π»ΠΈΡ†Π°.ΠŸΠΎΠ»Π΅Π‘Ρ‚Ρ€ΠΎΠΊΠ°) - 1) КАК ΠžΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠ΅ΠŸΠΎΠ»Π΅

Π˜Π—

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

Π“Π”Π•

Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π’Π°Π±Π»ΠΈΡ†Π°.ΠŸΠΎΠ»Π΅Π‘Ρ‚Ρ€ΠΎΠΊΠ°) > 0

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно эффСктивСн ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ слоТных ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ внСшниС Ρ„Π°ΠΉΠ»Ρ‹, Π³Π΄Π΅ трСбуСтся строгоС соотвСтствиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΡ… символов.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ Π² запросах ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ поля соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ Π² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ структурС Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок привСдСния Ρ‚ΠΈΠΏΠΎΠ².

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ прайс-листов ΠΈΠ· CSV ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ², каТдая миллисСкунда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сборщик мусора Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ 1Π‘. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Если ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ послСднСго символа являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ слоТного парсинга, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, минуя созданиС ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ строк Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π₯отя для Ρ€Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ это Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, Π² высоконагруТСнных систСмах оптимизация строковых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π΄Π°Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹ΠΉ прирост скорости.

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

ВлияниС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Π΄Π»ΠΈΠ½Ρƒ строки

Π’ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи ΠΈΠ»ΠΈ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹) Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ нСсколько Π±Π°ΠΉΡ‚, Π½ΠΎ функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π² 1Π‘ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ сниппСты ΠΊΠΎΠ΄Π°

Для закрСплСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ нСсколько Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частыС сцСнарии, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ Π² повсСднСвной Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая удаляСт послСдний символ любого Ρ‚ΠΈΠΏΠ°, Ссли строка Π½Π΅ пуста:

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

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

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

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

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

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

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний символ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ½ являСтся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ списка:

  • πŸ“ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ послСдний Π±Π°ΠΉΡ‚ строки Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ запятой ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой.
  • βš™οΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π’Ρ‹Π±ΠΎΡ€..Когда для компактности ΠΊΠΎΠ΄Π°.
  • βœ… Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ строку ΠΈΠ»ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ИспользованиС Ρ‚Π°ΠΊΠΈΡ… сниппСтов ускоряСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ сниТаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ появлСния ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Π² критичСских участках ΠΊΠΎΠ΄Π°. РСкомСндуСтся ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния.

πŸ’‘

ВсСгда провСряйтС строку Π½Π° пустоту ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΅Π΅ Π΄Π»ΠΈΠ½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок выполнСния Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅.

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

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдниС Π΄Π²Π° символа?

Π›ΠΎΠ³ΠΈΠΊΠ° остаСтся Ρ‚ΠΎΠΉ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ 2 ΠΈΠ· значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°. ΠŸΡ€ΠΈ этом критичСски Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° строки большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° 2, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘) > 1 Π’ΠΎΠ³Π΄Π° Π‘ = Π›Π΅Π²(Π‘, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘)-2); ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ½Ρ†Π΅ строки ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ?

Для этой Π·Π°Π΄Π°Ρ‡ΠΈ Π² 1Π‘ прСдусмотрСна функция Π‘ΠΎΠΊΡ€Π›ΠŸ (ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ слСва ΠΈ справа). Она удаляСт всС ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы с ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†ΠΎΠ² строки. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π‘ΠΎΠΊΡ€Π›(Π‘ΠΎΠΊΡ€ΠŸ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)).

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярныС выраТСния для удалСния послСднСго символа?

Π”Π°, начиная с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3.10, Π² 1Π‘ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ рСгулярныС выраТСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ шаблон .$ (Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ любой символ, Π΄ΠΎΠ»Π»Π°Ρ€ β€” ΠΊΠΎΠ½Π΅Ρ† строки) ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку. Однако для простой Π·Π°Π΄Π°Ρ‡ΠΈ удалСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа это ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Π΅ΠΌ функция Π›Π΅Π².

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний символ, Ссли строка находится Π² ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° Число?

Поля Ρ‚ΠΈΠΏΠ° Число Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ символов Π² тСкстовом ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСднюю Ρ†ΠΈΡ„Ρ€Ρƒ, число Π½ΡƒΠΆΠ½ΠΎ сначала ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² строку Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘Ρ‚Ρ€ΠΎΠΊΠ°(), Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π΅Π·ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ, ΠΏΡ€ΠΈ нСобходимости, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Число(). ΠŸΡ€ΡΠΌΠ°Ρ арифмСтичСская опСрация (Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 10 с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ) Π±ΡƒΠ΄Π΅Ρ‚ быстрСС ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ с матСматичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния.

ВлияСт Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ символа Π½Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ строки?

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