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

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

ИспользованиС встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ

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

Для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сцСнария достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ строку ΠΈ символ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ. Однако, Ссли Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΈΡ… стоит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ошибок, Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников с Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ список Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми:

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = "Π―Π±Π»ΠΎΠΊΠΈ, Π“Ρ€ΡƒΡˆΠΈ, ΠΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹, Π‘Π°Π½Π°Π½Ρ‹";

ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ² = Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, ",", Π›ΠΎΠΆΡŒ, Π›ΠΎΠΆΡŒ);

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘ΠΎΠΊΡ€Π›ΠŸ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚));

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

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

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

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘ΠΎΠΊΡ€Π›ΠŸ() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива сразу послС разбиСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΏΠΎ краям Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ частая ошибка, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ "Π―Π±Π»ΠΎΠΊΠΎ " Π½Π΅ Ρ€Π°Π²Π½ΠΎ "Π―Π±Π»ΠΎΠΊΠΎ".

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° слоТных Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ рСгулярныС выраТСния

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

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

  • πŸ” ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для поиска Π³Ρ€Π°Π½ΠΈΡ† элСмСнтов.
  • ⚑ Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π·Π°ΠΌΠ΅Π½ ΠΏΡ€ΠΈ большом количСствС Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ.
  • πŸ›‘οΈ Π—Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ ошибок, Ссли Π² Π΄Π°Π½Π½Ρ‹Ρ… Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ символы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования рСгулярного выраТСния для раздСлСния строки ΠΏΠΎ запятой ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ΅ с запятой:

ВСкст = "Π’ΠΎΠ²Π°Ρ€1;Π’ΠΎΠ²Π°Ρ€2,Π’ΠΎΠ²Π°Ρ€3; Π’ΠΎΠ²Π°Ρ€4";

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

Массив = Π Π΅Π³Π’Ρ‹Ρ€.Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ(ВСкст);

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

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

АлгоритмичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Ρ†ΠΈΠΊΠ» ΠΈ поиск подстроки

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

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° сравнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для строки Π΄Π»ΠΈΠ½ΠΎΠΉ Π² 10 000 символов:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (мс) Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ
Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ~2 мс Высокая БрСдняя
РСгулярныС выраТСния ~5 мс БрСдняя Высокая
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» (Найти) ~15 мс Низкая Максимальная
Π—Π°ΠΌΠ΅Π½Π° + Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ~8 мс Высокая БрСдняя

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ провСряйтС условиС Π²Ρ‹Ρ…ΠΎΠ΄Π°. Ошибка Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ строки ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ бСсконСчному Ρ†ΠΈΠΊΠ»Ρƒ, Ρ‡Ρ‚ΠΎ повСсит клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1Π‘.

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

Часто Π·Π°Π΄Π°Ρ‡Π° "ΠΈΠ· строки ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ массив" ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π΅ просто ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка строк, Π° созданиС массива ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массива чисСл ΠΈΠ»ΠΈ массива ссылок Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ массив строк Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΉ этап, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ строкой ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС выполнСния.

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

БтрокаЧисСл = "10, 20, 30, 40";

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ = Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ(БтрокаЧисСл, ",");

МассивЧисСл = Новый Массив;

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌ Из ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ Π¦ΠΈΠΊΠ»

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Числ = Число(Π‘ΠΎΠΊΡ€Π›ΠŸ(Π­Π»Π΅ΠΌ));

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Числ);

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

// ΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ°Π΅ΠΌ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ значСния ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка привСдСния Ρ‚ΠΈΠΏΠ°?

Ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли строка содСрТит символы, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π±ΡƒΠΊΠ²Ρ‹, Π·Π½Π°ΠΊΠΈ Π²Π°Π»ΡŽΡ‚Ρ‹). Ѐункция Число() строго Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ числового Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

Π Π°Π±ΠΎΡ‚Π° с экранированиСм ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ структурами

Π‘Π°ΠΌΡ‹ΠΉ слоТный сцСнарий Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° сам Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” CSV Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π³Π΄Π΅ поля ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ поля ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ запятая. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΠΎ запятой Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ структуру Π΄Π°Π½Π½Ρ‹Ρ…. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ трСбуСтся парсинг с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ контСкста, Π° Π½Π΅ просто поиск символа.

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС "Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ". Если Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ встрСчаСтся, ΠΊΠΎΠ³Π΄Π° Ρ„Π»Π°Π³ "Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ" Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, ΠΎΠ½ игнорируСтся ΠΈ считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ тСкста. РСализация Ρ‚Π°ΠΊΠΎΠ³ΠΎ парсСра Π² 1Π‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ аккуратности. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° ΠΈΠ»ΠΈ рСгулярныС выраТСния с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏ Π·Π°Ρ…Π²Π°Ρ‚Π°, Ссли вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ позволяСт.

  • πŸ“ Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ экранированы Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ("" Π²Π½ΡƒΡ‚Ρ€ΠΈ поля).
  • πŸ”„ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ΄Ρ‚ΠΈ посимвольно ΠΈΠ»ΠΈ с использованиСм слоТных шаблонов рСгулярок.
  • 🧩 Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для CSV часто доступны Π² Π²ΠΈΠ΄Π΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° экранирования ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ систСмы. ВсСгда свСряйтС ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ написаниСм парсСра.

πŸ’‘

Для стандартных Π·Π°Π΄Π°Ρ‡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС чтСния Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Π½Π΅ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ строк β€” это Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅ ΠΈ быстрСС.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ»Π°Π½. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тысяч Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… строк ΠΈ массивов ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ сборщика мусора. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ. Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎ, Π½Π΅ загруТая всю строку Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, особСнно Ссли ΠΎΠ½Π° поступаСт ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ сСтСвого ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС Π€ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ², Ссли послС создания массива ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ нСбольшой прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ случайной ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ исходной строки для разбиСния β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ БуфСрЗаписи ΠΈΠ»ΠΈ ВСкстовыйДокумСнт.

Π’ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Ρ‡Π΅ΠΊ-лист для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вашСго ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ выпуском Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΡƒΡŽ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ:

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° разбиСния строк

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

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

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

Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° массив, Ссли Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… символов?

Ѐункция Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ использованиС строки Π² качСствС раздСлитСля, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "->", Π˜ΡΡ‚ΠΈΠ½Π°).

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли послС разбиСния Π² элСмСнтах массива ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘ΠΎΠΊΡ€Π›ΠŸ() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива. Π­Ρ‚ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ слСва ΠΈ справа. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ†ΠΈΠΊΠ»Π΅, Π³Π΄Π΅ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ элСмСнты, ΠΈΠ»ΠΈ сразу ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² Π½ΠΎΠ²Ρ‹ΠΉ массив.

МоТно Π»ΠΈ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° массив чисСл ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ?

НСт, встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для прямого прСобразования строки Π² массив чисСл Π½Π΅ сущСствуСт. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массив строк Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² число.

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ строку, Π³Π΄Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ (запятая ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой)?

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярныС выраТСния с шаблоном Π²ΠΈΠ΄Π° [;,]. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой Π½Π° запятыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ функция Π‘Ρ‚Ρ€Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пустой элСмСнт Π² Π½Π°Ρ‡Π°Π»Π΅ массива?

Π­Ρ‚ΠΎ происходит, Ссли строка начинаСтся с раздСлитСля. НапримСр, Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ строки ",А,Π‘" ΠΏΠΎ запятой даст пустой элСмСнт ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΊΠ»ΡŽΡ‡Π°ΡΠŸΡƒΡΡ‚Ρ‹Π΅ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠΈ = Π›ΠΎΠΆΡŒ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡ΠΈΡ‰Π°ΠΉΡ‚Π΅ строку.