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

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

Основной Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ БрСдство

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

Код Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚";

НовыйБимвол = "Π—";

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = НовыйБимвол + Π‘Ρ€Π΅Π΄(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, 2);

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = НовыйБимвол;

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если исходная строка содСрТит всСго ΠΎΠ΄ΠΈΠ½ символ, функция Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 2) Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Ρ‡Ρ‚ΠΎ являСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Однако, Ссли пСрСмСнная Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° (НСопрСдСлСно), ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ Π΄Π»ΠΈΠ½Ρƒ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ВсСгда провСряйтС Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

πŸ’‘

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… с большим количСством ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. ВынСситС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π΄Π»ΠΈΠ½Ρ‹ строки Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

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

πŸ’‘

ИспользованиС ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘Ρ€Π΅Π΄ являСтся самым Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ для Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π°Ρ‡Π°Π»Π° строки Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ 1Π‘.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

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

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

  • πŸ” Π˜Π·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1).
  • πŸ”„ Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ», НовыйБимвол, 1, 1), Ссли ваша вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ количСства Π·Π°ΠΌΠ΅Π½.
  • ⚠️ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ дублируСтся Π»ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ символ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

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

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

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

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ΄Π°ΠΌΠΈ символов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘ΠΈΠΌΠ²ΠΎΠ»

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

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = "abc";

ΠšΠΎΠ΄ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎ = КодБимвола(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1);

// НапримСр, Π΄Π΅Π»Π°Π΅ΠΌ Π±ΡƒΠΊΠ²Ρƒ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ, Ссли ΠΎΠ½Π° строчная

Если ΠšΠΎΠ΄ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎ >= КодБимвола("Π°") И ΠšΠΎΠ΄ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎ <= КодБимвола("я") Π’ΠΎΠ³Π΄Π°

ΠΠΎΠ²Ρ‹ΠΉΠšΠΎΠ΄ = ΠšΠΎΠ΄ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎ - 32; // Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ASCII

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = Π‘ΠΈΠΌΠ²ΠΎΠ»(ΠΠΎΠ²Ρ‹ΠΉΠšΠΎΠ΄);

Π˜Π½Π°Ρ‡Π΅

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = Π‘ΠΈΠΌΠ²ΠΎΠ»(ΠšΠΎΠ΄ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎ);

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» + Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 2);

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΡΠΌΠ°Ρ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° с ΠΊΠΎΠ΄Π°ΠΌΠΈ символов ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ 32 для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр) Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ просто, ΠΊΠ°ΠΊ Π² ASCII. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСгистром ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π—Π°Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π‘Ρ‚Ρ€Π‘Ρ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅.

ИспользованиС ΠΊΠΎΠ΄ΠΎΠ² символов Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° допустимыС Π·Π½Π°ΠΊΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ, Ссли Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈΠ»ΠΈ спСцсимволов, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Ρ‹ для простой Π·Π°ΠΌΠ΅Π½Ρ‹?

ИспользованиС ΠΊΠΎΠ΄ΠΎΠ² услоТняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ зависимым ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ Π±ΡƒΠΊΠ²Ρ‹ Β«Π°Β» Π½Π° Β«Π±Β» ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.

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

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ явно ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π»ΠΎΠ³ΠΈΠΊΠΈ для пустой строки. Π’ зависимости ΠΎΡ‚ бизнСс-Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ: Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅Π½Π° игнорируСтся, Π»ΠΈΠ±ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ символ просто записываСтся Π² строку, дСлая Π΅Ρ‘ нСпустой. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого аспСкта часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ «мусорныС» Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π΅Π·Π°ΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½Ρ‹Π΅ прСфиксы.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ДСйствиС ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Риск ошибки
"ВСст" Π—Π°ΠΌΠ΅Π½Π° "Π’" Π½Π° "М" "ΠœΠ΅ΡΡ‚" НСт
"" (пусто) Π—Π°ΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π° "А" "А" Высокий (индСксация)
"1" Π—Π°ΠΌΠ΅Π½Π° "1" Π½Π° "2" "2" Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ (Π‘Ρ€Π΅Π΄(2))
НСопрСдСлСно Π›ΡŽΠ±Π°Ρ опСрация Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… НСопрСдСлСно. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ пустой строки, это Π½Π΅ строковый Ρ‚ΠΈΠΏ, ΠΈ Π²Ρ‹Π·ΠΎΠ² строковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Π½Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ «НСвСрный Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Β». ΠŸΠ΅Ρ€Π΅Π΄ любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ рСкомСндуСтся ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊ строкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€ΠΎΠΊΠ°() ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Ρ‡Π΅Ρ€Π΅Π· Π’ΠΈΠΏΠ—Π½Ρ‡.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ… символах. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, содСрТащая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ являСтся пустой, ΠΈ Π΅Ρ‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ β€” это ΠΏΡ€ΠΎΠ±Π΅Π». Π—Π°ΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π° Π½Π° Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ Π·Π½Π°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ восприятиС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π΅ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ….

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… условий

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

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со строками Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах

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

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

Π’ языкС запросов 1Π‘ Π½Π΅Ρ‚ прямой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ символа ΠΏΠΎ индСксу, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠŸΠžΠ”Π‘Π’Π ΠžΠšΠ ΠΈ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ прямо Π² тСкстС запроса. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° сСрвСр Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (SQL), Ρ‡Ρ‚ΠΎ часто Π±Ρ‹Π²Π°Π΅Ρ‚ эффСктивнСС.

ВЫБРАВЬ

"Н" + ΠŸΠžΠ”Π‘Π’Π ΠžΠšΠ(Π’Π°Π±Π»ΠΈΡ†Π°.Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚, 2, Π‘Π’Π ΠžΠšΠΠ”Π›Π˜ΠΠ(Π’Π°Π±Π»ΠΈΡ†Π°.Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚)) КАК НовыйРСквизит

Π˜Π—

Π’Π°Π±Π»ΠΈΡ†Π°

ИспользованиС запроса для трансформации строк позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСти ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром 1Π‘ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° процСссор сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Однако слоТныС логичСскиС условия, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄ΠΎΠ² символов, всС Ρ€Π°Π²Π½ΠΎ придСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° сторонС 1Π‘.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Π² запросах ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ поля Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. УсСчСниС Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ silently (Π±Π΅Π· ошибок), Ссли Π΄Π»ΠΈΠ½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ поля Π² Π‘Π”.

πŸ’‘

Для массовых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π±ΠΎΠ»Π΅Π΅ 10 000 строк) ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρƒ символов Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса ΠΊ Π‘Π”, Π° Π½Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅ Π½Π° сторонС 1Π‘.

FAQ: Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками

Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ, Ссли я Π½Π΅ знаю Π΄Π»ΠΈΠ½Ρƒ строки Π·Π°Ρ€Π°Π½Π΅Π΅?

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

МоТно Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Π½Π° пустоту (ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ)?

Π”Π°, это частный случай Π·Π°ΠΌΠ΅Π½Ρ‹. ВмСсто Π½ΠΎΠ²ΠΎΠ³ΠΎ символа Π²Ρ‹ просто Π±Π΅Ρ€Π΅Ρ‚Π΅ подстроку, начиная со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°: Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ€Π΅Π΄(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, 2). Π­Ρ‚ΠΎ эквивалСнтно ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ строку Π½Π° пустоту ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ с Unicode символами (эмодзи, ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹)?

Π”Π°, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Unicode (UTF-8/UTF-16). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π›Π΅Π², ΠŸΡ€Π°Π², Π‘Ρ€Π΅Π΄ ΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ символы, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π°ΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ эмодзи Π² строкС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹.

Π§Ρ‚ΠΎ быстрСС: Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ конкатСнация с Π‘Ρ€Π΅Π΄?

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

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ β€” это ΠΏΡ€ΠΎΠ±Π΅Π»?

ЛогичСски ΠΏΡ€ΠΎΠ±Π΅Π» являСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ символом, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Если ваша Π·Π°Π΄Π°Ρ‡Π° β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘ΠΎΠΊΡ€Π›. Если ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π» Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Β«*Β»), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ с ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ², Ρ€Π°Π²Π΅Π½ Π»ΠΈ Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1) ΠΏΡ€ΠΎΠ±Π΅Π»Ρƒ.