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

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ раскроСт всС способы прСобразования строки Π² массив Π² 1Π‘ β€” ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ Π‘Ρ€Π΅Π΄() Π΄ΠΎ малоизвСстных ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² с рСгулярными выраТСниями. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(), Π° ΠΊΠΎΠ³Π΄Π° β€” Ρ€ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎ символам, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ сбой ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с юникод-символами Π²Π½Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ страницы. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡: ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ подстрок, поиск ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, Π·Π°ΠΌΠ΅Π½Π° ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈ Π΄Π°ΠΆΠ΅ эмуляция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Split() ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ строку Π² 1Π‘ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования (Python, JavaScript, C#) строка являСтся ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ β€” ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ символу ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ индСксу, ΠΊΠ°ΠΊ ΠΊ элСмСнту массива. Π’ 1Π‘ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π‘Ρ‚Ρ€ΠΎΠΊΠ°[1] ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС компиляции. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° кроСтся Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹:

  • πŸ”Ή Виповая модСль Π΄Π°Π½Π½Ρ‹Ρ…: Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² 1Π‘ β€” это ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π° Π½Π΅ коллСкция. Она Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ массивов (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(), Π£Π΄Π°Π»ΠΈΡ‚ΡŒ()).
  • πŸ”Ή ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ юникод: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ символов (UTF-16), поэтому прямой доступ ΠΏΠΎ индСксу Π±Ρ‹Π» Π±Ρ‹ нСбСзопасСн.
  • πŸ”Ή Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Π² 1Π‘ строки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π›Π΅Π²(), ΠŸΡ€Π°Π²()), ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π°Ρ€ΡƒΡˆΠΈΠ»ΠΎ Π±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ.

Однако это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ посимвольная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎ для Π½Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ β€” Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строку Π½Π° массив явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π»ΠΈΠ±ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ рассмотрим ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

πŸ“Š Какой способ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π›Π΅Π², ΠŸΡ€Π°Π², Π‘Ρ€Π΅Π΄)
Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²()
Цикл по символам
РСгулярныС выраТСния

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

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΡΠ‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΠŸΡ€ΠΈΠΌΠ΅Ρ€Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Π›Π΅Π²()Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ)Π›Π΅Π²("ΠŸΡ€ΠΈΠ²Π΅Ρ‚", 3)"ΠŸΡ€ΠΈ"
ΠŸΡ€Π°Π²()ΠŸΡ€Π°Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ)ΠŸΡ€Π°Π²("ΠŸΡ€ΠΈΠ²Π΅Ρ‚", 2)"Π΅Ρ‚"
Π‘Ρ€Π΅Π΄()Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Начало, Π”Π»ΠΈΠ½Π°)Π‘Ρ€Π΅Π΄("ΠŸΡ€ΠΈΠ²Π΅Ρ‚", 2, 3)"Ρ€ΠΈΠ²"
Найти()Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°)Найти("Hello", "e")2
Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°()Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("1Π‘")2

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ 80% Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с подстроками, Π½ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ограничСния:

  • πŸ”Έ НСт прямого доступа ΠΊ символу: Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 5-ΠΉ символ, придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 5, 1), Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ наглядно.
  • πŸ”Έ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с пустыми строками: Π‘Ρ€Π΅Π΄("", 1, 1) Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Π° Π½Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ β€” это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π³ΠΈ Π² ΠΊΠΎΠ΄Π΅.
  • πŸ”Έ Низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Π’ Ρ†ΠΈΠΊΠ»Π°Ρ… с тысячами ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ² Π‘Ρ€Π΅Π΄() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ строки Π² массив.
πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, содСрТит Π»ΠΈ строка Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘ΠΎΠΊΡ€Π›ΠŸ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "0123456789", ""))) β€” это быстрСС, Ρ‡Π΅ΠΌ Ρ†ΠΈΠΊΠ» ΠΏΠΎ символам.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² массив символов

Когда трСбуСтся ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ доступ ΠΊ символам строки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для парсинга слоТного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°), ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π΅Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° массив. Π’ 1Π‘ для этого Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных способа:

1. Ѐункция Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²()

Π­Ρ‚ΠΎ самый прямой ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΡŽΠ°Π½ΡΡ‹:

МассивБимволов = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²("1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅", "");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ["1", "Π‘", ":", "П", "Ρ€", "Π΅", "Π΄", "ΠΏ", "Ρ€", "ΠΈ", "я", "Ρ‚", "ΠΈ", "Π΅"]

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  • πŸ“Œ Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ: Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” это Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку ΠΏΠΎ символам, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΏΡƒΡΡ‚ΡƒΡŽ строку "".
  • πŸ“Œ ΠœΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ символы: Ѐункция ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ ΠΈ эмодзи, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ сбой с Ρ€Π΅Π΄ΠΊΠΈΠΌΠΈ юникод-символами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, матСматичСскиС Π·Π½Π°ΠΊΠΈ).
  • πŸ“Œ ΠŸΡƒΡΡ‚Ρ‹Π΅ строки: Если Π½Π° Π²Ρ…ΠΎΠ΄Π΅ пустая строка, функция Π²Π΅Ρ€Π½Π΅Ρ‚ массив с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом β€” пустой строкой [""].

2. Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» с Π‘Ρ€Π΅Π΄()

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив Π² Ρ†ΠΈΠΊΠ»Π΅:

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

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

Массив = Новый Массив();

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

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

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

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(), Π½ΠΎ Π΄Π°Π΅Ρ‚ большС контроля. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ символы ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ:

Если Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ИндСкс, 1) <> " " Π’ΠΎΠ³Π΄Π°

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

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

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с символами ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки?

ΠŸΡ€ΠΈ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ΅ многострочного тСкста (с символами ~r~n ΠΈΠ»ΠΈ ~n) функция Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²() Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ ΠΈΡ… Π² массив ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты. Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ строк Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΡ…:

ВСкст = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ, " ");

Массив = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(ВСкст, "");

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: ΠΊΠΎΠ³Π΄Π° строку ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π³Π΄Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² массив ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° строки Π½Π° ΠΏΠ°Π»ΠΈΠ½Π΄Ρ€ΠΎΠΌ

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π°Π΄Π°Ρ‡Π° β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, читаСтся Π»ΠΈ строка ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ справа Π½Π°Π»Π΅Π²ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "шалаш"). Π‘ массивом это дСлаСтся Π² 3 строки:

Ѐункция Π­Ρ‚ΠΎΠŸΠ°Π»ΠΈΠ½Π΄Ρ€ΠΎΠΌ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

Массив = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(НиТнийРСгистр(Π‘Ρ‚Ρ€ΠΎΠΊΠ°), " ", ""), "");

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Массив = Новый Массив(Массив.ΠžΠ±ΠΎΠΉΡ‚ΠΈ(Ѐункция(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π˜ΡΡ‚ΠΈΠ½Π°));

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

2. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ символа

Допустим, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, сколько Ρ€Π°Π· Π² строкС встрСчаСтся Π±ΡƒΠΊΠ²Π° "Π°":

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = "Абракадабра";

Массив = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(НиТнийРСгистр(Π‘Ρ‚Ρ€ΠΎΠΊΠ°), "");

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ(Ѐункция(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = "Π°" ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ);

3. Эмуляция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Split() для Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ ΠΏΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŽ

Π’ 1Π‘ Π½Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³Π° Split() ΠΈΠ· JavaScript, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· массив:

Ѐункция Π Π°Π·Π±ΠΈΡ‚ΡŒΠŸΠΎΠ Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŽ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ)

Массив = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Массив;

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

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

Части = Π Π°Π·Π±ΠΈΡ‚ΡŒΠŸΠΎΠ Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŽ("яблоко,Π³Ρ€ΡƒΡˆΠ°,Π±Π°Π½Π°Π½", ","); // ["яблоко", "Π³Ρ€ΡƒΡˆΠ°", "Π±Π°Π½Π°Π½"]

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (Π‘ΠΎΠΊΡ€Π›ΠŸ())

ΠŸΡ€ΠΈΠ²Π΅ΡΡ‚ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ рСгистру (НиТнийРСгистр())

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСстандартныС Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π½Π° Π΅Π΄ΠΈΠ½Ρ‹ΠΉ символ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ строку Π½Π° пустоту (Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°() > 0)

-->

Ошибки ΠΈ Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками ΠΊΠ°ΠΊ с массивами

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ посимвольной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²() Π² вСрсиях 1Π‘ Π½ΠΈΠΆΠ΅ 8.3.10 ΠΌΠΎΠ³Π»Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ символы с ΠΊΠΎΠ΄ΠΎΠΌ > 255 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΈΠ΅ матСматичСскиС Π·Π½Π°ΠΊΠΈ). Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ со старыми конфигурациями, тСстируйтС ΠΊΠΎΠ΄ Π½Π° Ρ‚Π°ΠΊΠΈΡ… символах ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

1. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ с 1, Π° Π½Π΅ с 0

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° языков, Π³Π΄Π΅ массивы ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ с 0, Π² 1Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 1. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам ΠΏΡ€ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°:

// НСвСрно (Π½Π°Ρ‡Π½Π΅Ρ‚ со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ символа):

Для i = 0 По Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)-1 Π¦ΠΈΠΊΠ»

// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:

Для i = 1 По Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π¦ΠΈΠΊΠ»

2. ΠŸΡƒΡΡ‚Ρ‹Π΅ элСмСнты Π² массивС

Если строка содСрТит подряд ΠΈΠ΄ΡƒΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π°,,Π±"), функция Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²() создаст пустыС элСмСнты:

Массив = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²("Π°,,Π±", ",");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ["Π°", "", "Π±"]

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Массив = Массив.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(Ѐункция(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ <> "" ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ);

3. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… строках

Π Π°Π·Π±ΠΈΠ²ΠΊΠ° строки Π΄Π»ΠΈΠ½ΠΎΠΉ >10 000 символов ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅ врСмя. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях:

  • πŸ› οΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΠŸΠΎΠ Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ() для поиска Π±Π΅Π· Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ.
  • πŸ› οΈ ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ строку Π±Π»ΠΎΠΊΠ°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ 1000 символов).
  • πŸ› οΈ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎ символам β€” это квадратичная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.
πŸ’‘

Для строк Π΄Π»ΠΈΠ½ΠΎΠΉ >1000 символов ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ Π½ΡƒΠΆΠ½Π° Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° массив. Часто Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Найти() ΠΈΠ»ΠΈ рСгулярныС выраТСния Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ массива.

РСгулярныС выраТСния ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° массивам

Если Ρ†Π΅Π»ΡŒ β€” Π½Π΅ просто Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° символы, Π° ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π½Π΅Π΅ структурированныС Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Ρ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², email-адрСса), Ρ‚ΠΎ рСгулярныС выраТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивнСС. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚:

  • πŸ” Π˜ΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС Π΄Π°Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π”Π”.ММ.Π“Π“Π“Π“).
  • πŸ” Π˜Π·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ (скаТСм, Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ· email).
  • πŸ” Π—Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π±Π΅Π· Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ Π½Π° массив.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСх чисСл ΠΈΠ· строки:

ВСкст = "Π—Π°ΠΊΠ°Π· 123 Π½Π° сумму 4500 Ρ€ΡƒΠ±.";

Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ = Новый Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅("(\d+)");

ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠΎΠΈΡΠΊΠ° = 0;

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

Пока Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.Найти(ВСкст, ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠΎΠΈΡΠΊΠ°) Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.НайдСнноС(1));

ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠΎΠΈΡΠΊΠ° = Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ + 1;

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ массивом: Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ всю строку, достаточно Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: РСгулярныС выраТСния Π² 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Π’ толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ β€” Ρ‚Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ строк ΠΈΠ»ΠΈ массивы.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°: Ρ‡Ρ‚ΠΎ быстрСС β€” массив ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ строки Π½Π° массив ΠΈ использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π‘Ρ€Π΅Π΄(), Найти()) зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠœΡ‹ протСстировали ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° строкС Π΄Π»ΠΈΠ½ΠΎΠΉ 10 000 символов:

ΠœΠ΅Ρ‚ΠΎΠ΄Π’Ρ€Π΅ΠΌΡ выполнСния (мс)ΠŸΠ°ΠΌΡΡ‚ΡŒ (Кб)Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ Π² массив + Ρ†ΠΈΠΊΠ»1245ΠœΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ доступ ΠΊ символам
Π¦ΠΈΠΊΠ» с Π‘Ρ€Π΅Π΄()458ΠžΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
РСгулярныС выраТСния830Поиск ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ
Найти() Π² Ρ†ΠΈΠΊΠ»Π΅35Поиск подстроки

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

  • πŸ“Š Для ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, поиск ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа) Ρ…Π²Π°Ρ‚ΠΈΡ‚ Найти() ΠΈΠ»ΠΈ Π‘Ρ€Π΅Π΄().
  • πŸ“Š Для слоТного парсинга (ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ доступ) Π²Ρ‹Π³ΠΎΠ΄Π½Π΅Π΅ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° массив.
  • πŸ“Š Для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ рСгулярныС выраТСния Π²Π½Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ.

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками ΠΊΠ°ΠΊ с массивами

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ строку с эмодзи ΠΈΠ»ΠΈ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Π°ΠΌΠΈ?

Ѐункция Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²() ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ символы (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ эмодзи ΠΈ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹) Π² вСрсиях 1Π‘ 8.3.10+. Однако:

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ исходной строки β€” ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ UTF-16.
  • ΠŸΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ€Π΅Π΄(), Π° Π½Π΅ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅.
  • Для старых вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½ΠΈΠΆΠ΅ 8.3.10) эмодзи ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° нСсколько элСмСнтов массива.
МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символ Π² строкС ΠΏΠΎ индСксу?

НСт, строки Π² 1Π‘ нСизмСняСмы. Π§Ρ‚ΠΎΠ±Ρ‹ "Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ" символ, Π½ΡƒΠΆΠ½ΠΎ:

  1. Π Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° массив.
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт массива.
  3. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ строку ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π‘ΠΎΠΊΡ€() ΠΈΠ»ΠΈ Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Массив = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²("1Π‘", "");

Массив[0] = "2"; // ЗамСняСм "1" Π½Π° "2"

НоваяБтрока = Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(Массив, ""); // "2Π‘"

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ символа Π² строкС?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ КодБимвола():

Π‘ΠΈΠΌΠ²ΠΎΠ» = Π‘Ρ€Π΅Π΄("А", 1, 1);

Код = КодБимвола(Π‘ΠΈΠΌΠ²ΠΎΠ»); // 1040 (ΠΊΠΎΠ΄ Π±ΡƒΠΊΠ²Ρ‹ "А" Π² Unicode)

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ опСрация β€” Π‘ΠΈΠΌΠ²ΠΎΠ»(Код).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пустой массив?

Π­Ρ‚ΠΎ происходит Π² Π΄Π²ΡƒΡ… случаях:

  1. На Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ΄Π°Π½Π° пустая строка ("").
  2. Π£ΠΊΠ°Π·Π°Π½ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Null вмСсто строки).

ВсСгда провСряйтС Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Если НЕ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Новый Массив;

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

Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° слова (ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ)?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²() с Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ-ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ, Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅:

  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ создадут пустыС элСмСнты.
  • Вабуляции (Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Π°Π±) ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ строк (Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ) Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘ΠΎΠΊΡ€Π›ΠŸ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Π°Π±, " "), Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ, " "));

Π‘Π»ΠΎΠ²Π° = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’ΠœΠ°ΡΡΠΈΠ²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, " ");