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

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

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ строки Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ символу Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ β€” классичСская ошибка Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ устойчивым ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π›Π΅Π²ΠΎ

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

Однако этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π»ΠΈΠ½Ρ‹ строки ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ критичСской ошибкС. Если строка пуста, функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ 0, ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Π·ΡΡ‚ΡŒ Π›Π΅Π²ΠΎ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, -1) Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ валидация Π΄Π»ΠΈΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π΅Π·ΠΊΠΎΠΉ являСтся строгой Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ.

Рассмотрим ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° встроСнном языкС. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ сбоСв:

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

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°) > 0 Π’ΠΎΠ³Π΄Π°

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

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°;

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

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

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

πŸ’‘

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ UTF-8 ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ символами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи), функция Π›Π΅Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ символ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, оставив «хвост» Π±Π°ΠΉΡ‚Π°. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с символами, Π° Π½Π΅ с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°

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

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

Если ваша Π·Π°Π΄Π°Ρ‡Π° β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний символ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запятой ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° услоТняСтся. Π’Π°ΠΌ потрСбуСтся комбинация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠŸΡ€Π°Π² для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ символа ΠΈ Π›Π΅Π²ΠΎ для ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ.

  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΡ€Π°Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1) для получСния послСднСго символа Π±Π΅Π· риска ошибки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эта функция ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с пустыми строками (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку).
  • πŸ›  Ѐункция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π°, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС лишниС символы ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ послСдний.
  • ⚑ ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ° часто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π² слоТных выраТСниях, Π³Π΄Π΅ ΡƒΠΆΠ΅ вычислСна Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ позиция.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для удалСния послСднСй запятой, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ:

Если ΠŸΡ€Π°Π²(ВСкстБписка, 1) ="," Π’ΠΎΠ³Π΄Π°

ВСкстБписка = Π›Π΅Π²ΠΎ(ВСкстБписка, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкстБписка) - 1);

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

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ сСмантичСски Π²Π΅Ρ€Π½Ρ‹ΠΌ: ΠΌΡ‹ Π½Π΅ просто Β«ΠΎΡ‚Ρ€ΡƒΠ±Π°Π΅ΠΌ хвост», Π° удаляСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, Ссли ΠΎΠ½ присутствуСт. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ сниТаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ логичСских ошибок ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

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

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых строк ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв

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

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников (XML, JSON, тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹) нСльзя Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ строка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ пустой. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, строка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹, Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСсто.

Π’Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ понятия Null (НСопрСдСлСно) ΠΈ пустая строка. Π’ 1Π‘ пСрСмСнная Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ НСопрСдСлСно, Ссли ΠΎΠ½Π° явно ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… соСдинСний такая ситуация Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. ВсСгда провСряйтС Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊ строкС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π‘ΠΎΠΊΡ€Π› ΠΈ Π‘ΠΎΠΊΡ€ΠŸ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ строки, Ссли Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ символы. Если ваша Π·Π°Π΄Π°Ρ‡Π° β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ символ, сначала ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ сокращСниС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π΅Π·ΠΊΡƒ.

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ сравнСния повСдСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

Входная строка Π”Π»ΠΈΠ½Π° Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π›Π΅Π²ΠΎ(Π‘Ρ‚Ρ€, Π”Π»-1) Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠŸΡ€Π°Π²(Π‘Ρ‚Ρ€, 1)
"ΠŸΡ€ΠΈΠ²Π΅Ρ‚" 6 "ΠŸΡ€ΠΈΠ²Π΅" "Ρ‚"
"" (пустая) 0 Ошибка выполнСния "" (пустая)
"А" 1 "" (пустая) "А"
"" 2 "" ""

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ΠΏΡ€ΠΈ Π›Π΅Π²ΠΎ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, -1)?

ВнутрСнняя рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π›Π΅Π²ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число символов. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π»ΠΎΠ³ΠΈΠΊΠΈ, Π° Π½Π΅ ΠΊΠ°ΠΊ запрос Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΈ списках

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π°Π΄Π°Ρ‡Π° программиста 1Π‘ β€” Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это рСализуСтся ΠΏΡƒΡ‚Π΅ΠΌ добавлСния раздСлитСля послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию лишнСго символа Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ строки.

БущСствуСт Π΄Π²Π° основных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” Β«Π½Π°ΠΈΠ²Π½Ρ‹ΠΉΒ», ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ строим строку Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ удаляСм послСдний символ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ β€” Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉΒ», ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ добавляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами, Π½ΠΎ Π½Π΅ послС послСднСго.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΡ‰Π΅ Π² написании, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ лишнСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строки Π² ΠΊΠΎΠ½Ρ†Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ввСдСния Ρ„Π»Π°Π³Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΈΠ»ΠΈ использования счСтчика, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ услоТняСт ΠΊΠΎΠ΄, Π½ΠΎ экономит рСсурсы процСссора Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

// Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ (ΠΏΡ€ΠΎΡ‰Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ)

БтрокаБписка ="";

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠœΠ°ΡΡΠΈΠ²Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π¦ΠΈΠΊΠ»

БтрокаБписка = БтрокаБписка + Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ +",";

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(БтрокаБписка) > 0 Π’ΠΎΠ³Π΄Π°

БтрокаБписка = Π›Π΅Π²ΠΎ(БтрокаБписка, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(БтрокаБписка) - 1);

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

// Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Π‘Π΅Π· лишнСго раздСлитСля (эффСктивнСС)

БтрокаБписка ="";

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠœΠ°ΡΡΠΈΠ²Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π¦ΠΈΠΊΠ»

Если БтрокаБписка ="" Π’ΠΎΠ³Π΄Π°

БтрокаБписка = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚;

Π˜Π½Π°Ρ‡Π΅

БтрокаБписка = БтрокаБписка +"," + Π­Π»Π΅ΠΌΠ΅Π½Ρ‚;

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

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

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

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ сборки строки

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

Π Π°Π±ΠΎΡ‚Π° с пСрСносами строк ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами

Π’ 1Π‘ пСрСнос строки ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ символами Π² зависимости ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ источника Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Windows это комбинация Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ + Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Πš (CR+LF), Π² Unix/Linux β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ (LF).

Если ваша Π·Π°Π΄Π°Ρ‡Π° β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся пСрСносом строки, простая ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Ссли Π² ΠΊΠΎΠ½Ρ†Π΅ строки находится ΠΏΠ°Ρ€Π° символов. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ удалСния послСднСго пСрСноса строки:

Если ΠŸΡ€Π°Π²(ВСкст, 2) = Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ + Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Πš Π’ΠΎΠ³Π΄Π°

ВСкст = Π›Π΅Π²ΠΎ(ВСкст, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст) - 2);

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ ΠŸΡ€Π°Π²(ВСкст, 1) = Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ Π’ΠΎΠ³Π΄Π°

ВСкст = Π›Π΅Π²ΠΎ(ВСкст, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст) - 1);

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ОБ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² ΠΊΠΎΠ½Ρ†Π° строки ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. ВсСгда Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ строки ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ, Ссли источник Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π΅Π½.

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

πŸ’‘

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

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

Π’ контСкстС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 строки ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π›ΡŽΠ±Π°Ρ опСрация ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (конкатСнация, ΠΎΠ±Ρ€Π΅Π·ΠΊΠ°) создаСт Π½ΠΎΠ²ΡƒΡŽ строку Π² памяти. ΠŸΡ€ΠΈ частом Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° сборщик мусора (Garbage Collector).

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

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

  • πŸš€ ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², сохраняя Π΄Π»ΠΈΠ½Ρƒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ссли строка Π½Π΅ мСняСтся.
  • πŸ’Ύ ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ каТдая ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° строки создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти, Ρ‡Ρ‚ΠΎ влияСт Π½Π° быстродСйствиС ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ….
  • 🧹 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘ΠΎΠΊΡ€ΠŸ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π΅Π·ΠΊΠΎΠΉ, Ссли Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ наличия ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ символ.

БоблюдСниС этих Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ количСства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ объСмов ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных инструмСнтов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста, связанныС с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ со строками.

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний символ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π»ΠΈΠ½Ρ‹?

ВСхничСски ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ это ΠΊΡ€Π°ΠΉΠ½Π΅ плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² 1Π‘ рСсурсоСмка ΠΈ замСдляСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² дСсятки Ρ€Π°Π· ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ условиСм Если.

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

Π›ΠΎΠ³ΠΈΠΊΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. НуТно Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ 2 ΠΈΠ· Π΄Π»ΠΈΠ½Ρ‹ строки: Π›Π΅Π²ΠΎ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) - 2). ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС: Π΄Π»ΠΈΠ½Π° строки Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° 2, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний ΠΏΡ€ΠΎΠ±Π΅Π», Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ?

Π‘Π°ΠΌΡ‹ΠΉ простой способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘ΠΎΠΊΡ€ΠŸ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°). Она автоматичСски удаляСт всС ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы Π² ΠΊΠΎΠ½Ρ†Π΅ строки. Если Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π΅Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ: Если ΠŸΡ€Π°Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1) ="" Π’ΠΎΠ³Π΄Π°....

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

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ строки хранятся Π² Unicode. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ символами, Π° Π½Π΅ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, поэтому ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ символами (ΠΊΠ°ΠΊ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Ѐункция Π›Π΅Π²ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π΅Π·Π°Π΅Ρ‚ ΠΏΠΎ количСству символов.

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π›Π΅Π²ΠΎ ΠΈ ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°?

Ѐункция ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΠ°Ρ‡ΠŸΠΎΠ·, Π”Π»ΠΈΠ½Π°) Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°. Π›Π΅Π²ΠΎ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π»ΠΈΠ½Π°) являСтся частным случаСм ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1, Π”Π»ΠΈΠ½Π°). Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ быстро, Π²Ρ‹Π±ΠΎΡ€ зависит ΠΎΡ‚ читаСмости ΠΊΠΎΠ΄Π°.