Π—Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°, Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с внСшними систСмами. Казалось Π±Ρ‹, Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ опСрация β€” Π½ΠΎ Π² арсСналС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π΅ΡΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 5 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ для своСго сцСнария. Новичку Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ Π² функциях Π‘Ρ€Π΅Π΄, ΠŸΡ€Π°Π² ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ПоБимволам, Π° ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ всСгда помнят ΠΎ Π½ΡŽΠ°Π½ΡΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ с юникод-символами ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ.

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

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΊΠΎΠ΄Ρƒ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ: Π² 1Π‘ строка β€” это Π½Π΅ просто Π½Π°Π±ΠΎΡ€ Π±ΡƒΠΊΠ², Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ со своими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ особСнностями. НапримСр, функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… строк ΠΈΠ·-Π·Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… символов (ΠΊΠ°ΠΊ NBSP ΠΈΠ»ΠΈ BOM). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками β€” всСгда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ…"Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ" Π΄Π»ΠΈΠ½Ρƒ ΠΈ содСрТимоС.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ раздСлСния строки Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Цикл ПоБимволам
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ€Π΅Π΄/ΠŸΡ€Π°Π²/Π›Π΅Π²
РСгулярныС выраТСния
Π‘ΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
НС занимаюсь ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ строк

1. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ€Π΅Π΄, ΠŸΡ€Π°Π², Π›Π΅Π²

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для раздСлСния строки "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" Π½Π° массив символов:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° ="ΠŸΡ€ΠΈΠ²Π΅Ρ‚";

МассивБимволов = Новый Массив;

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

Для ИндСкс = 1 По Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π¦ΠΈΠΊΠ»

МассивБимволов.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ИндСкс, 1));

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π‘Ρ€Π΅Π΄ считаСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹. Для строк Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΡŽ, Ссли Π² строкС Π΅ΡΡ‚ΡŒ символы, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ 1 Π±Π°ΠΉΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи ΠΈΠ»ΠΈ китайскиС ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹).

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π›Π΅Π² ΠΈ ΠŸΡ€Π°Π² Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ:

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Пока Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) > 0 Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1));

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = ΠŸΡ€Π°Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) - 1);

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

  • βœ… ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ знания слоТных конструкций.
  • βœ… Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π»ΡŽΠ±Ρ‹Ρ… конфигурациях, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 1Π‘:7.7 (с ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π½Π° синтаксис).
  • ❌ Низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строках (Π±ΠΎΠ»Π΅Π΅ 1000 символов).
  • ❌ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с юникод-символами Π² старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ ПоБимволам: ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для 1Π‘ 8.3

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

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ° ="ВСстовая строка";

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ПоБимволам;

Для КаТдого Π‘ΠΈΠΌΠ²ΠΎΠ» Из Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘ΠΈΠΌΠ²ΠΎΠ»); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π½Π° Π½ΠΎΠ²ΠΎΠΉ строкС

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

ΠœΠ΅Ρ‚ΠΎΠ΄ автоматичСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚:

  • πŸ”Ή ΠœΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "😊" ΠΈΠ»ΠΈ "").
  • πŸ”Ή БпСцсимволы (Tab, CR/LF).
  • πŸ”Ή Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с BOM (ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠΌ порядка Π±Π°ΠΉΡ‚ΠΎΠ²).
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½ΠΈΠΆΠ΅ 8.3.6 ΠΌΠ΅Ρ‚ΠΎΠ΄ ПоБимволам отсутствуСт. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ вашСй Π±Π°Π·Ρ‹ Ρ‡Π΅Ρ€Π΅Π· мСню Π‘ΠΏΡ€Π°Π²ΠΊΠ° β†’ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ссли скрипт Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ВСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3.6 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ являСтся Null ΠΈΠ»ΠΈ НСопрСдСлСно

НСт ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ)

НуТна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° всСх символов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ спСцсимволы-->

3. РСгулярныС выраТСния: Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ для слоТных Π·Π°Π΄Π°Ρ‡

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ просто Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку, Π° Π΅Ρ‰Π΅ ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ символы ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ»ΠΈ Π±ΡƒΠΊΠ²Ρ‹), рСгулярныС выраТСния станут ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом. Π’ 1Π‘ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π½Π° символы, игнорируя ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹:

ВСкст ="1Π‘ 8.3";

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("(?s).");

БопоставлСния = Π Π΅Π³Π’Ρ‹Ρ€.НайтиВсС(ВСкст);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Для КаТдого БопоставлСниС Из БопоставлСния Π¦ΠΈΠΊΠ»

Если БопоставлСниС.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ <>"" Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(БопоставлСниС.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

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

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

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

  • πŸ”§ Гибкая Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ символов ΠΏΠΎ шаблонам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "\d" для Ρ†ΠΈΡ„Ρ€).
  • πŸ”§ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° слоТных ΠΏΡ€Π°Π²ΠΈΠ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,"Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° символы, Π½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ Π² числа").
  • πŸ”§ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° юникода Ρ‡Π΅Ρ€Π΅Π· Ρ„Π»Π°Π³ (?u).

НСдостатки:

  • ⚠️ Π‘ΠΎΠ»Π΅Π΅ высокий ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния β€” Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ знания синтаксиса рСгулярок.
  • ⚠️ НиТС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ПоБимволам для простых Π·Π°Π΄Π°Ρ‡.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ слоТного рСгулярного выраТСния для разбиСния строки с условиями

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("(?u)(\p{L}|[0-9])");

Π­Ρ‚ΠΎΡ‚ шаблон ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ) ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹, игнорируя всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ символы.

4. РСкурсивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: ΠΊΠΎΠ³Π΄Π° нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹

Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с 1Π‘:Мобильная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ»ΠΈ Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… срСдах) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· явных Ρ†ΠΈΠΊΠ»ΠΎΠ². Π—Π΄Π΅ΡΡŒ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ рСкурсия β€” функция, которая вызываСтся сама сСбя, ΠΏΠΎΠΊΠ° строка Π½Π΅ станСт пустой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Ѐункция Π Π°Π·Π±ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ, Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = НСопрСдСлСно)

Если Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

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

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ) = 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π›Π΅Π²(ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ, 1));

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π Π°Π·Π±ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(ΠŸΡ€Π°Π²(ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ) - 1), Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚);

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

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

// ИспользованиС:

МассивБимволов = Π Π°Π·Π±ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ("РСкурсия");

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ рСкурсивного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ”„ ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… сцСнариях).
  • πŸ”„ ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка Π½Π° ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строках (Π±ΠΎΠ»Π΅Π΅ 1000 символов).
  • πŸ”„ Код ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, Ρ‡Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΈΠ½Π° рСкурсии ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 1000–5000 Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² зависимости ΠΎΡ‚ вСрсии). Для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

5. Π Π°Π±ΠΎΡ‚Π° с Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ строки:

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = Новый Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅("0100010101000001"); // ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π±Π°ΠΉΡ‚Ρ‹"EA" Π² HEX

ΠœΠ°ΡΡΠΈΠ²Π‘Π°ΠΉΡ‚ΠΎΠ² = Новый Массив;

Для ИндСкс = 0 По Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.Π Π°Π·ΠΌΠ΅Ρ€ - 1 Π¦ΠΈΠΊΠ»

Π‘Π°ΠΉΡ‚ = Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс);

ΠœΠ°ΡΡΠΈΠ²Π‘Π°ΠΉΡ‚ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Π°ΠΉΡ‚);

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

Когда этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½:

  • πŸ’Ύ Π§Ρ‚Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PDF, EXE).
  • πŸ’Ύ Π Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π³Π΄Π΅ Π²Π°ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Π°ΠΉΡ‚Ρ‹, Π° Π½Π΅ символы).
  • πŸ’Ύ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… строк.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ массивом чисСл (ΠΊΠΎΠ΄ΠΎΠ² Π±Π°ΠΉΡ‚ΠΎΠ²), Π° Π½Π΅ строковых символов. Для прСобразования Π±Π°ΠΉΡ‚Π° Π² символ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘ΠΈΠΌΠ²ΠΎΠ»:

Π‘ΠΈΠΌΠ²ΠΎΠ» = Π‘ΠΈΠΌΠ²ΠΎΠ»(Π‘Π°ΠΉΡ‚); // ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π±Π°ΠΉΡ‚Π° Π² символ

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ, ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ трСбования вашСй Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° юникода Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Π‘Ρ€Π΅Π΄/ΠŸΡ€Π°Π²/Π›Π΅Π² Низкая Π”Π° (Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ошибки) ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, старыС вСрсии 1Π‘
ПоБимволам Высокая Π”Π° ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (8.3.6+)
РСгулярныС выраТСния БрСдняя Π”Π° (с Ρ„Π»Π°Π³ΠΎΠΌ (?u)) Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΉ Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° разбиСния
РСкурсия Низкая Π”Π° Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ срСды Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ²
Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Высокая НСт (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ) Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΉ Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, низкоуровнСвая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
πŸ’‘

Для 90% Π·Π°Π΄Π°Ρ‡ Π² соврСмСнных конфигурациях ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ ПоБимволам β€” ΠΎΠ½ сочСтаСт простоту, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с юникодом.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ Π² простой Π·Π°Π΄Π°Ρ‡Π΅ раздСлСния строки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ камнями. Π’ΠΎΡ‚ самыС распространСнныС ошибки ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

1. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… символов

Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ NBSP (Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π»), BOM ΠΈΠ»ΠΈ символы управлСния (CR, LF). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ КодБимвола:

Для КаТдого Π‘ΠΈΠΌΠ²ΠΎΠ» Из Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ПоБимволам Π¦ΠΈΠΊΠ»

Если КодБимвола(Π‘ΠΈΠΌΠ²ΠΎΠ») < 32 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НСвидимый символ:" + КодБимвола(Π‘ΠΈΠΌΠ²ΠΎΠ»));

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

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

2. Ошибки с индСксациСй

Π’ 1Π‘ индСксация символов Π² строках начинаСтся с 1, Π° Π½Π΅ с 0 (ΠΊΠ°ΠΊ Π² ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования). Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… источников. НапримСр, Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 0, 1) Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Π° Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ.

3. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ

Если строка ΠΏΡ€ΠΈΡˆΠ»Π° ΠΈΠ· внСшнСго источника (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HTTP-запроса ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π°), Π΅Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Π±Π°Π·Ρ‹. ВсСгда провСряйтС ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ строку:

Π‘Ρ‚Ρ€ΠΎΠΊΠ°UTF8 = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"|", Π‘ΠΈΠΌΠ²ΠΎΠ»(10)); // ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ· CP1251 Π² UTF-8

4. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ памяти Π½Π° Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строках

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ строк Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 10 000 символов ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с созданиСм ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… массивов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ПоБимволам) ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ высокому ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ:

ΠŸΠΎΡ‚ΠΎΠΊ = Новый ЧтСниСВСкста;

ΠŸΠΎΡ‚ΠΎΠΊ.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(Π‘ΠΎΠ»ΡŒΡˆΠ°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°);

Пока ΠŸΠΎΡ‚ΠΎΠΊ.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ Π¦ΠΈΠΊΠ»

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎ частям

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

Если Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘ΠΈΠΌΠ²ΠΎΠ»(160)) > 0 Π’ΠΎΠ³Π΄Π° β€” ΠΈΡ‰ΠΈΡ‚Π΅ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (NBSP), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π»ΠΎΠΌΠ°ΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹.-->

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ строк

Как Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π½Π° символы Π² 1Π‘ 7.7?

Π’ 1Π‘:7.7 Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ПоБимволам, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘ΠΎΠΊΡ€Π›, Π‘ΠΎΠΊΡ€ΠŸ ΠΈ Ρ†ΠΈΠΊΠ»:

Π‘Ρ‚Ρ€ ="1Π‘7.7";

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

Для Π½ = 1 По Π”Π»Π‘Ρ‚Ρ€ Π¦ΠΈΠΊΠ»

Π‘ΠΈΠΌΠ² = Π‘ΠΎΠΊΡ€Π›(Π‘ΠΎΠΊΡ€ΠŸ(Π‘Ρ‚Ρ€, Π½), Π”Π»Π‘Ρ‚Ρ€ - Π½ + 1);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘ΠΈΠΌΠ²);

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ функция Π‘Ρ€Π΅Π΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку для ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… символов?

Π­Ρ‚ΠΎ Π±Π°Π³ старых вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π΄ΠΎ 8.3.8). ΠžΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ПоБимволам ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π² UTF-16:

Π‘Ρ‚Ρ€ΠΎΠΊΠ°UTF16 = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"",""); // ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ конвСртация
Как Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π½Π° символы ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ПоБимволам ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ПоБимволам.Найти(Ѐункция(Π‘ΠΈΠΌΠ²) Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘ΠΈΠΌΠ² <>""; ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ);
МоТно Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π½Π° символы Π² запросС 1Π‘?

НСт, Π² языкС запросов 1Π‘ Π½Π΅Ρ‚ инструмСнтов для посимвольной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк. ВсС манипуляции Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π° сторонС 1Π‘-скрипта (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса).

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ строку с эмодзи?

Π­ΠΌΠΎΠ΄Π·ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ нСсколькими Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, поэтому для Π½ΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ПоБимволам (Π² вСрсиях 8.3.6+) ΠΈΠ»ΠΈ рСгулярныС выраТСния с Ρ„Π»Π°Π³ΠΎΠΌ (?u). ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("(?u).");

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ = Π Π΅Π³Π’Ρ‹Ρ€.НайтиВсС("A😊B"); // ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅Ρ‚ Π½Π° A, 😊, B