Π Π°Π±ΠΎΡ‚Π° со строками Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·Π° символов β€” особСнно ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°ΠΊΠ°Ρ… Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ("") ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ('') ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΎΡ‚ ошибок парсинга Π΄ΠΎ сбоСв ΠΏΡ€ΠΈ экспортС Π² XML/JSON. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы поиска ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² строках β€” ΠΎΡ‚ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎ написания собствСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² 1Π‘ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ синтаксиса языка, ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. НапримСр, строка "Π’ΠΎΠ²Π°Ρ€"ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ"" содСрТит ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠœΡ‹ рассмотрим Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ символы, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌΠΈ.

1. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 1Π‘ для поиска символов

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 прСдоставляСт встроСнныС инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Π΅Π· написания слоТного ΠΊΠΎΠ΄Π°. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Найти ΠΈ БтрНайти β€” Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ символами, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅.

Ѐункция Найти(Π˜ΡΠΊΠΎΠΌΠ°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния подстроки (Π² нашСм случаС β€” ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ) ΠΈΠ»ΠΈ 0, Ссли символ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. НапримСр:

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти("ВСкст""с"" ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ","""");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ); // Π’Π΅Ρ€Π½Π΅Ρ‚ 7 (позиция ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ)

Для ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ синтаксис Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½, Π½ΠΎ ΠΈΡ… Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти("ВСкст'с' ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ","'");

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ); // Π’Π΅Ρ€Π½Π΅Ρ‚ 6

  • πŸ” Найти β€” ΠΈΡ‰Π΅Ρ‚ подстроку с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ рСгистра
  • πŸ“ БтрНайти β€” Ρ‚ΠΎ ΠΆΠ΅, Π½ΠΎ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра (Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ)
  • ⚑ Π‘Ρ‚Ρ€ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ β€” Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с позициями символов
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Найти с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ: """" вмСсто "". Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ дСйствуСт Π²ΠΎ всСх строках 1Π‘, Π³Π΄Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°.

2. Поиск всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² строкС

Если Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² строкС, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ, стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅. Алгоритм простой: ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, начиная поиск послС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ послСднСго Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ символа.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для поиска всСх Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ:

ВСкст ="Π­Ρ‚ΠΎ""строка"" с""нСсколькими"" ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ";

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = 1;

Пока ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ > 0 Π¦ΠΈΠΊΠ»

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти(ВСкст,"""", ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ);

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:" + ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ);

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ + 1; // Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ зацикливания

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

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

Для ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ‚Π° ΠΆΠ΅, Π½ΠΎ Π±Π΅Π· экранирования:

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти(ВСкст,"'", ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ);

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ = 1

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» с условиСм ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ > 0

Π’ Ρ†ΠΈΠΊΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Найти с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ

ПослС нахоТдСния ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° +1

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ-->

3. ИспользованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска всСх Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ regex:

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ = Π Π΅Π³Π’Ρ‹Ρ€.Найти("ВСкст""с"" ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ""Π²Π½ΡƒΡ‚Ρ€ΠΈ""");

Пока Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.НайдСн Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:" + Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.ΠΠ°ΠΉΠ΄Π΅Π½Π½Π°ΡΠŸΠΎΠ·ΠΈΡ†ΠΈΡ);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.ΠΠ°ΠΉΡ‚ΠΈΠ‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅;

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

  • 🎯 Π’ΠΎΡ‡Π½Ρ‹ΠΉ поиск ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ слов)
  • πŸ”„ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ символы
  • πŸ“Œ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° слоТных условий (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,"Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ΄Π΅Ρ‚ запятая")
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ мобильном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 1Π‘ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступСн. ΠŸΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡΠ Π΅Π³ΡƒΠ»ΡΡ€Π½Ρ‹Π΅Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡ.

4. Поиск ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² массивС строк (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†)

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΠ°ΠΉΡ‚ΠΈΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ’Π’Π°Π±Π»ΠΈΡ†Π΅(Π’Π°Π±Π»ΠΈΡ†Π°)

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Для КаТдого Колонка Из Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π¦ΠΈΠΊΠ»

ВСкст = Π‘Ρ‚Ρ€ΠΎΠΊΠ°[Колонка];

Если Найти(ВСкст,"""") > 0 Или Найти(ВСкст,"'") > 0 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² строкС" + Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НомСр +

", ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°" + Колонка +":" + ВСкст);

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

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

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† (10 000+ строк) Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ. Π’ этом случаС цСлСсообразно:

  • πŸ“Š Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ИндСксПоиска для ускорСния
  • πŸ”„ ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ (ΠΏΠΎ 1000 строк)
  • πŸ’Ύ Π‘ΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для Π°Π½Π°Π»ΠΈΠ·Π°

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Найти, БтрНайти)

РСгулярныС выраТСния

БобствСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ (Ρ†ΠΈΠΊΠ»Ρ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ)

НС искал ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² 1Π‘-->

5. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с экранированиСм ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Основная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ поискС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² 1Π‘ β€” ΠΈΡ… Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ экранированиС Π² строках ΠΊΠΎΠ΄Π°. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ ("), Π² ΠΊΠΎΠ΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ """" (Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ символа!). Π­Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ синтаксичСским ошибкам.

ΠŸΡ€Π°Π²ΠΈΠ»Π° экранирования:

Π’ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ‘ΠΈΠΌΠ²ΠΎΠ» Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ΠšΠ°ΠΊ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅
Двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°"""""
ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°'"'"
ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°`"`"

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки:

  • ❌ ΠŸΡ€ΠΎΠΏΡƒΡΠΊ экранирования: Найти(ВСкст,"") β†’ синтаксичСская ошибка
  • ❌ Π›ΠΈΡˆΠ½Π΅Π΅ экранированиС: Найти(ВСкст,""""") β†’ ΠΈΡ‰Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ подряд
  • ❌ ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° с ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ: Найти(ВСкст,') β†’ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ синтаксис
Π”Π²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ° ="""";

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти(ВСкст, Π”Π²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ°);

Π’Π°ΠΊ ΠΊΠΎΠ΄ становится Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅, Π° риск ошибок сниТаСтся.-->

6. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: поиск ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ…

Рассмотрим Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… сцСнария, Π³Π΄Π΅ поиск ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ критичСски Π²Π°ΠΆΠ΅Π½:

  1. Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· CSV/Excel

    ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² с раздСлитСлями ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "ООО""Ромашка"""). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ строку, Π½ΡƒΠΆΠ½ΠΎ сначала Π½Π°ΠΉΡ‚ΠΈ всС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ раздСлитСлями, Π° ΠΊΠ°ΠΊΠΈΠ΅ β€” Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

    ВСкст ="""АдрСс"",""Π³ΠΎΡ€. Москва,"""ΡƒΠ». Π›Π΅Π½ΠΈΠ½Π°""", Π΄.1""";
    

    ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ”Π°Π½Π½Ρ‹Ρ… = Новый Массив;

    ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = 1;

    Пока ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ > 0 Π¦ΠΈΠΊΠ»

    ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти(ВСкст,"""", ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ + 1);

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

    ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ);

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

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

  2. Экспорт Π² JSON/XML

    ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ JSON-строки всС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ экранированы ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слСшСм (\"). Поиск ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ здСсь β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ.

  3. Анализ SQL-запросов

    Π’ динамичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… запросах ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡΠΌ. Π˜Ρ… поиск ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.

Как ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ ΠΎΡ‚ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ-Π΄Π°Π½Π½Ρ‹Ρ…?

Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… Π²Ρ€ΠΎΠ΄Π΅ CSV ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ-Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ("" вмСсто"), Π° ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ стоят Π² Π½Π°Ρ‡Π°Π»Π΅/ΠΊΠΎΠ½Ρ†Π΅ поля.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "ПолС""с"" ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ",Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β€” здСсь ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΈ послСдниС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ раздСлитСлями, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ (""с"") β€” Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π½Ρ‹ΠΉ поиск: пСрвая ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅, вторая β€” Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚, Π° всС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹"" Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅".

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

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) поиск ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚:

  • πŸš€ ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ компиляция рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ)
  • πŸ“ˆ ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования
  • πŸ”— Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ тСкста Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎ 4096 символов)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ поиска Π² большом тСкстС:

Ѐункция ΠΠ°ΠΉΡ‚ΠΈΠ’ΡΠ΅ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ‘Ρ‹ΡΡ‚Ρ€ΠΎ(ВСкст)

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

ДлинаВСкста = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст);

Если ДлинаВСкста > 10000 Π’ΠΎΠ³Π΄Π°

// Π Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π½Π° части ΠΏΠΎ 10 000 символов

Π§Π°ΡΡ‚ΡŒ = 1;

Пока Π§Π°ΡΡ‚ΡŒ < ДлинаВСкста Π¦ΠΈΠΊΠ»

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ = Π‘Ρ€Π΅Π΄(ВСкст, Π§Π°ΡΡ‚ΡŒ, 10000);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ΠΠ°ΠΉΡ‚ΠΈΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ’Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅(Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, Π§Π°ΡΡ‚ΡŒ));

Π§Π°ΡΡ‚ΡŒ = Π§Π°ΡΡ‚ΡŒ + 10000;

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

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ΠΠ°ΠΉΡ‚ΠΈΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈΠ’Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅(ВСкст, 1));

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.20+ появились Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками (Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ поиск. Однако ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Найти для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

FAQ: ЧастыС вопросы ΠΏΠΎ поиску ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² 1Π‘

Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² строкС, Ссли ΠΎΠ½Π° являСтся послСдним символом?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Найти с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° Π΄Π»ΠΈΠ½Ρƒ строки:

ВСкст ="ВСкст""";

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти(ВСкст,"""");

Если ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст) Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π² ΠΊΠΎΠ½Ρ†Π΅ строки!");

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Найти Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Ссли ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Ρ‚ΠΎΡ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ Π² строкС?

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ экранировали ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

  • Для Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ """"
  • Для ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… β€” "'"

Π’Π°ΠΊΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ‰Π΅Ρ‚Π΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² UTF-8 символ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ANSI).

МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…?

НСт, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Найти Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со строками. Для Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅) сначала ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² строку с Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ:

ВСкст = Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ("utf-8");

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Найти(ВСкст,"""");

Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² строкС Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ символ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

НовыйВСкст = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚,"""","Β«");

НовыйВСкст = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(НовыйВСкст,"'","Β»");

Для слоТных Π·Π°ΠΌΠ΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ) примСняйтС рСгулярныС выраТСния.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ поискС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² запросС 1Π‘ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ?

Π’ тСкстС запроса ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² динамичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ запросС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

Запрос = Новый Запрос;

Запрос.ВСкст ="ВЫБРАВЬ ΠŸΠΎΠΈΡΠΊΠšΠ°Π²Ρ‹Ρ‡Π΅ΠΊ(:ВСкст) КАК Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ВСкст", Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ;