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

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

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

Основной ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска: функция Найти()

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

Если искомый символ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½, функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ написании условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ логичСских ошибок Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅.

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для поиска запятой Π² строкС с ЀИО:

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = "Иванов,ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²,Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²";

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΠ—Π°ΠΏΡΡ‚ΠΎΠΉ = Найти(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, ",");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΠ΅Ρ€Π²Π°Ρ запятая находится Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ: " + ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΠ—Π°ΠΏΡΡ‚ΠΎΠΉ);

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС пСрСмСнная ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΠ—Π°ΠΏΡΡ‚ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 7. Если Π±Ρ‹ ΠΌΡ‹ искали символ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² строкС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΡ‡ΠΊΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» Π±Ρ‹ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ. Вакая Π»ΠΎΠ³ΠΈΠΊΠ° позволяСт Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ разбиСния строки.

πŸ’‘

ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Найти() Π½Π° равСнство Π½ΡƒΠ»ΡŽ ΠΏΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° для срСза строки, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ошибка выполнСния.

Поиск с ΠΊΠΎΠ½Ρ†Π° строки ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Ѐункция Найти() ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ синтаксисом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ поиска. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ поиск вСдСтся с Π½Π°Ρ‡Π°Π»Π° строки (слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ), Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся Π½Π°ΠΉΡ‚ΠΈ послСднСС Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ символа. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅.

Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΠ°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠŸΠΎΠΈΡΠΊΠ°.Π‘ΠšΠΎΠ½Ρ†Π°, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π°Ρ‡Π½Π΅Ρ‚ сканированиС строки с послСднСго символа ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ послСдний Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡƒΡ‚ΠΈ, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Ρ‚Π°ΠΌΠΈ Π² строковом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

  • πŸ” ΠΠ°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠŸΠΎΠΈΡΠΊΠ°.БНачала β€” стандартноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, поиск ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния слСва.
  • πŸ”™ ΠΠ°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠŸΠΎΠΈΡΠΊΠ°.Π‘ΠšΠΎΠ½Ρ†Π° β€” поиск послСднСго вхоТдСния, сканированиС справа Π½Π°Π»Π΅Π²ΠΎ.
  • πŸ“ ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠΎΠΈΡΠΊΠ° β€” Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ поиск.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании направлСния Π‘ΠšΠΎΠ½Ρ†Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ число всС Ρ€Π°Π²Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ символа ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° строки (слСва), Π° Π½Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ†Π°. НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ индСкс вхоТдСния с расстояниСм ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° строки.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы: класс Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈ рСгулярныС выраТСния

Помимо глобальной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Найти(), Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ сущСствуСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстом. Однако для Π·Π°Π΄Π°Ρ‡ΠΈ поиска ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ символа этот класс Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² связкС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ БтрЧислоБтрок, хотя прямой Π°Π½Π°Π»ΠΎΠ³ Найти Ρƒ Π½Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹ Π² строкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярного выраТСния:

ВСкст = "Артикул: 12345";

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

НайдСно = Π Π΅Π³Π’Ρ‹Ρ€.Найти(ВСкст);

Если НайдСно Π’ΠΎΠ³Π΄Π°

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = НайдСно.ИндСкс + 1; // ИндСкс Π² рСгулярках с 0, Π² 1Π‘ с 1

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

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

πŸ“Š Какой способ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Ѐункция Найти()
РСгулярныС выраТСния
Π¦ΠΈΠΊΠ» По ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π‘Ρ‚Ρ€ΠΎΠΊΠ°

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ отсутствиС искомого символа

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

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

Битуация Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ дСйствиС
Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π°ΠΉΠ΄Π΅Π½ Π² Π½Π°Ρ‡Π°Π»Π΅ 1 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс для срСза с 1
Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΊΠΎΠ½Ρ†Π΅ Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ являСтся Π»ΠΈ символ послСдним
Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ 0 ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
ΠŸΡƒΡΡ‚Π°Ρ строка поиска 1 Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ поиска пустой строки, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π΅Π½

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Поиск пустой строки ("") всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пустая строка считаСтся находящСйся Π² Π½Π°Ρ‡Π°Π»Π΅ любой строки. Π˜Π·Π±Π΅Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² качСствС искомого Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π·Π±ΠΎΡ€Π° строк

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘: Ρ€Π°Π·Π±ΠΎΡ€ строки Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° "Код:НаимСнованиС". Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π΄ΠΎ двоСточия. Для этого ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ раздСлитСля ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π›Π΅Π²() для получСния Π»Π΅Π²ΠΎΠΉ части строки.

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ… = "00456:ΠœΠΎΠ»ΠΎΡ‚ΠΎΠΊ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ";

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ = ":";

ΠŸΠΎΠ·Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Ρ = Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ…, Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ);

Если ΠŸΠΎΠ·Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Ρ > 0 Π’ΠΎΠ³Π΄Π°

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

НаимСнованиС = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ…, ΠŸΠΎΠ·Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Ρ + 1);

Π˜Π½Π°Ρ‡Π΅

ΠšΠΎΠ΄Π’ΠΎΠ²Π°Ρ€Π° = Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ…;

НаимСнованиС = "";

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

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠ²Π°Ρ€Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позиция ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° сам Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ количСство символов Π΄ΠΎ Π½Π΅Π³ΠΎ. Аналогично, ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ наимСнования ΠΌΡ‹ добавляСм Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сам Π·Π½Π°ΠΊ двоСточия.

β˜‘οΈ Алгоритм бСзопасного Ρ€Π°Π·Π±ΠΎΡ€Π° строки

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ массовом поискС

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

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… символов Π² ΠΎΠ΄Π½ΠΎΠΉ строкС, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Ρ‹Π³ΠΎΠ΄Π½Π΅Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ для Ρ€Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π²Ρ‹Π·ΠΎΠ² встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ 1Π‘ транслируСт Π²Ρ‹Π·ΠΎΠ² Найти() Π² эффСктивныС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиСй 8.2 ΠΈ 8.3). ВсСгда свСряйтС синтаксис Π² справкС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваша конфигурация.

Π‘Π΅ΠΊΡ€Π΅Ρ‚ быстрой Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими тСкстами

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

πŸ’‘

Ѐункция Найти() являСтся самым быстрым ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ инструмСнтом для опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ символа. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Ρ‘ Π² 99% случаСв вмСсто Ρ€ΡƒΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°.

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

Как Π½Π°ΠΉΡ‚ΠΈ всС вхоТдСния символа Π² строкС, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅?

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ». Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Найти(), указывая ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π°Ρ‡Π°Π»Π° поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π²Π΅Π½ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ символа плюс Π΅Π΄ΠΈΠ½ΠΈΡ†Π°. Π¦ΠΈΠΊΠ» продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° функция Π½Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ 0.

МоТно Π»ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ сразу нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… символов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡ‚ΡƒΡŽ)?

Ѐункция Найти() ΠΈΡ‰Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ подстроку. Для поиска ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… символов Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ нСсколько Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ рСгулярными выраТСниями с конструкциСй Π²ΠΈΠ΄Π° [.,].

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ функция, Ссли ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π» Π² Π½Π°Ρ‡Π°Π»Π΅ строки?

Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки являСтся ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ, функция Π²Π΅Ρ€Π½Π΅Ρ‚ число 1. ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π² 1Π‘ всСгда Ρ€Π°Π²Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ это символ.

Как Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ послСднСго символа строки?

Для этого Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск. Достаточно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(), которая Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ количСство символов. Π­Ρ‚ΠΎ число ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ послСднСго символа.