Π Π°Π±ΠΎΡ‚Π° с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 часто сталкиваСтся с вопросом: "А сколько ΠΆΠ΅ символов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ строку?" Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с большими тСкстовыми полями, XML-Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ описаниями. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ всСгда ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹, Π° ΠΈΡ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам выполнСния ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

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

ВСхничСскиС ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ строки Π² 1Π‘ 8.3

Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 сущСствуСт Π΄Π²Π° основных Ρ‚ΠΈΠΏΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками:

  • πŸ”Ή Π‘Ρ‚Ρ€ΠΎΠΊΠ° β€” стандартный Ρ‚ΠΈΠΏ с Тёстким ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π² 2 147 483 647 символов (тСорСтичСский максимум, фактичСский Π»ΠΈΠΌΠΈΡ‚ зависит ΠΎΡ‚ контСкста).
  • πŸ”Ή НСограничСннаяБтрока β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ тСкстами (доступСн с вСрсии 8.3.10).

Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ограничСниями:

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ использования Максимальная Π΄Π»ΠΈΠ½Π° (символов) ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ° ~100 ΠΌΠ»Π½ (практичСски) Зависит ΠΎΡ‚ доступной памяти
ПолС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (SQL) 8 000 (для NVARCHAR(MAX) Π² MS SQL) ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π‘Π£Π‘Π”, Π½Π΅ 1Π‘
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Π΅Π±-сСрвиса ~32 000 ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° SOAP
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ячСйкС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ~1 000 000 ΠœΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ часто опрСдСляСтся Π½Π΅ самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π° внСшними систСмами. НапримСр, ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· REST API ΠΈΠ»ΠΈ JSON Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΠ΅Ρ€Π΅Ρ‚ΡŒΡΡ Π² ограничСния сСрвСра ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π° Π½Π΅ 1Π‘.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ строк Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² 1Π‘?
Π”ΠΎ 255 символов
ΠžΡ‚ 255 Π΄ΠΎ 1000
ΠžΡ‚ 1000 Π΄ΠΎ 10 000
Π‘ΠΎΠ»Π΅Π΅ 10 000
НС знаю ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈ НСограничСннаяБтрока

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

Π’ΠΈΠΏ НСограничСннаяБтрока появился Π² вСрсии 8.3.10 ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большими тСкстами (Π»ΠΎΠ³ΠΈ, XML, JSON-Π΄Π°Π½Π½Ρ‹Π΅). Π•Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности:

  • πŸ“œ НС ΠΈΠΌΠ΅Π΅Ρ‚ Тёсткого ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ)
  • πŸš€ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, конкатСнация)
  • ⚠️ НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строковыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘Ρ‚Ρ€ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ())
  • πŸ”„ МоТно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ строку ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ()

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСобразования:

НСогрБтрока = Новый НСограничСннаяБтрока("ΠžΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ тСкст...");

ΠžΠ±Ρ‹Ρ‡Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = НСогрБтрока.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(); // ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ строку

πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ НСограничСннаяБтрока Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ строку, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(). Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок нСсовмСстимости Ρ‚ΠΈΠΏΠΎΠ².

Как ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ строки

Когда стандартных возмоТностСй 1Π‘ нСдостаточно, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

  1. Π Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° части. Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ тСкст дСлится Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ фиксированной Π΄Π»ΠΈΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ 1000 символов) ΠΈ хранится Π² массивС ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
  2. ИспользованиС BLOB-ΠΏΠΎΠ»Π΅. Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ тСкст Π² Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Base64).
  3. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Для ΠΊΡ€Π°ΠΉΠ½Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… (Π»ΠΎΠ³ΠΈ, Π°Ρ€Ρ…ΠΈΠ²Ρ‹) тСкст сохраняСтся Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π½Π° дискС ΠΈΠ»ΠΈ Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π° Π² Π±Π°Π·Π΅ хранится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылка.
  4. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π΅Π΄ сохранСниСм тСкст сТимаСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ ZIP ΠΈΠ»ΠΈ GZIP, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ пространство.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ строки Π½Π° части:

ДлинныйВСкст = "..."; // Π’Π°Ρˆ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ тСкст

РазмСрЧасти = 1000;

ЧастиВСкста = Новый Массив();

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ = 0 По Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ДлинныйВСкст) / РазмСрЧасти Π¦Π΅Π» По 1 Π¦ΠΈΠΊΠ»

ЧастиВСкста.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ€Π΅Π΄(ДлинныйВСкст, Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ * РазмСрЧасти + 1, РазмСрЧасти));

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

Как Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходный тСкст ΠΈΠ· частСй?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ():

ВосстановлСнныйВСкст = Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(ЧастиВСкста, "");

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, поиск подстроки) станут нСдоступны. Π’Π°ΠΌ придётся сначала Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² строку.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ систСмами Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-сСрвисы, HTTP-запросы ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ограничСния:

  • 🌐 HTTP/HTTPS: ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π° запроса часто ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ 2-4 ΠœΠ‘ (зависит ΠΎΡ‚ сСрвСра).
  • πŸ“„ JSON/XML: ΠŸΠ°Ρ€ΡΠ΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΡ€ΡƒΠΏΠ½Π΅Π΅ 50-100 ΠœΠ‘.
  • πŸ”Œ COM-соСдинСниС: ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΎΠΊΠΎΠ»ΠΎ 1 ΠœΠ‘.
  • πŸ“Ž Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы: ИмСна Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Windows ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ 260 символами (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡƒΡ‚ΡŒ).

Для ΠΎΠ±Ρ…ΠΎΠ΄Π° этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ”— ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ (chunked transfer encoding) для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ—„οΈ Π Π°Π·Π±ΠΈΠ²ΠΊΡƒ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ сборкой Π½Π° сторонС получатСля.
  • πŸ” Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ (gzip/deflate) ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ большого тСкста Ρ‡Π΅Ρ€Π΅Π· HTTP с Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ:

АдрСс = "https://example.com/api/upload";

Π”Π°Π½Π½Ρ‹Π΅ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°();

Π”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("TextPart1", Π›Π΅Π²(Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠ’Π΅ΠΊΡΡ‚, 1000000));

Π”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("TextPart2", Π‘Ρ€Π΅Π΄(Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠ’Π΅ΠΊΡΡ‚, 1000001));

Запрос = Новый HTTPЗапрос(АдрСс);

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚(Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒJSON(Π”Π°Π½Π½Ρ‹Π΅));

ΠžΡ‚Π²Π΅Ρ‚ = Новый HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅().ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(Запрос);

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· 1Π‘:ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ REST API всСгда уточняйтС Π»ΠΈΠΌΠΈΡ‚Ρ‹ Π½Π° сторонС сСрвСра. НСкоторыС ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сСрвисы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:Fresh) ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои ограничСния Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками

Π”Π°ΠΆΠ΅ Ссли ваш тСкст умСщаСтся Π² стандартныС ограничСния, Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСэффСктивной. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ совСты ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ НСограничСннаяБтрока для тСкстов >10 000 символов|

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ частых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ…|

Для поиска подстрок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Найти() вмСсто БтрНайти()|

Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ большиС тСксты Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… с ссылками|

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сТатиС для Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…-->

1. ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 + Π‘Ρ‚Ρ€ΠΎΠΊΠ°2 создаёт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти. ΠŸΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам. ВмСсто этого:

// ΠŸΠ»ΠΎΡ…ΠΎ (ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = "";

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π‘Ρ‚Ρ€ΠΎΠΊΠ°;

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

// Π₯ΠΎΡ€ΠΎΡˆΠΎ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ НСограничСннаяБтрока)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый НСограничСннаяБтрока();

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

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

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

2. Поиск Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстах. Ѐункция БтрНайти() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π‘Ρ‚Ρ€ΠΎΠΊΠ°:

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠ’Π΅ΠΊΡΡ‚.Найти("искомая подстрока"); // БыстрСС

// вмСсто

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = БтрНайти(Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠ’Π΅ΠΊΡΡ‚, "искомая подстрока");

3. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ большиС тСксты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, описания Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈ), Π»ΡƒΡ‡ΡˆΠ΅ вынСсти ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΏΠΎΠ»Π΅ΠΌ Ρ‚ΠΈΠΏΠ° ВСкст ΠΈΠ»ΠΈ Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅, Π° Π² основной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылку (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€).

πŸ’‘

ИспользованиС НСограничСннаяБтрока для ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² 5-10 Ρ€Π°Π· ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ строкой.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈΠ·-Π·Π° Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ошибки:

  • πŸ”₯ ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² строку большС символов, Ρ‡Π΅ΠΌ позволяСт Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠΎΠ»Π΅ Π±Π°Π·Ρ‹ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ 255 символов).
  • πŸ”„ ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°: ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ систСмами ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ искаТСниС тСкста ΠΈΠ·-Π·Π° нСсовпадСния ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ (UTF-8 vs Windows-1251).
  • πŸ“ НСучтённыС символы: Π—Π°Π±Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ символы Ρ‚ΠΈΠΏΠ° табуляции (\t) ΠΈΠ»ΠΈ пСрСноса строки (\n) Ρ‚ΠΎΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСсто.
  • πŸ” Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ рСгистру: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска (Найти(), БтрНайти()) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ рСгистр, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ пропуску Π½ΡƒΠΆΠ½Ρ‹Ρ… совпадСний.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ошибки с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ:

// ВСкст Π² UTF-8

ВСкст = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€! 😊";

Запрос = Новый HTTPЗапрос("https://example.com");

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚(ВСкст);

// Если сСрвСр ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Windows-1251, символ "😊" Π±ΡƒΠ΄Π΅Ρ‚ искаТён

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ, всСгда явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Ρ‘ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ/записи Ρ„Π°ΠΉΠ»ΠΎΠ²:

ВСкст = Новый ЧтСниСВСкста(ИмяЀайла, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8).ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ();

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° типичная ошибка β€” Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых строк. Ѐункция ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для строки Π΄Π»ΠΈΠ½ΠΎΠΉ 0. Если строка содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ( ), ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ пустой:

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

// Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ выполнится Π΄Π°ΠΆΠ΅ для строки с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ

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

Для Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, " ", "")) > 0 Π’ΠΎΠ³Π΄Π°

// Π‘Ρ‚Ρ€ΠΎΠΊΠ° содСрТит Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ символы

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками

Рассмотрим нСсколько Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… сцСнариСв, Π³Π΄Π΅ Π·Π½Π°Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ строк ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: ГСнСрация большого XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ XML для ΠΎΠ±ΠΌΠ΅Π½Π° с внСшнСй систСмой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚Ρ‹. РСшСниС β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π—Π°ΠΏΠΈΡΡŒXML с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ записью Π² Ρ„Π°ΠΉΠ»:

Π—Π°ΠΏΠΈΡΡŒ = Новый Π—Π°ΠΏΠΈΡΡŒXML();

Π—Π°ΠΏΠΈΡΡŒ.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΠ€Π°ΠΉΠ»("C:\temp\big_data.xml");

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠžΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅XML();

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠΠ°Ρ‡Π°Π»ΠΎΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚");

// Π¦ΠΈΠΊΠ» ΠΏΠΎ большим Π΄Π°Π½Π½Ρ‹ΠΌ

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠΠ°Ρ‡Π°Π»ΠΎΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°("Π‘Ρ‚Ρ€ΠΎΠΊΠ°");

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ’Π΅ΠΊΡΡ‚(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.ВСкст);

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠšΠΎΠ½Π΅Ρ†Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°();

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

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠšΠΎΠ½Π΅Ρ†Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°();

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ();

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»ΠΎΠ²

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большой Π»ΠΎΠ³ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 50 ΠœΠ‘), Π½Π΅ стоит Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π›ΡƒΡ‡ΡˆΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ построчно:

Π§Ρ‚Π΅Π½ΠΈΠ΅ = Новый ЧтСниСВСкста("C:\logs\big_log.log");

Пока Π˜ΡΡ‚ΠΈΠ½Π° Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π§Ρ‚Π΅Π½ΠΈΠ΅.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ();

Если Π‘Ρ‚Ρ€ΠΎΠΊΠ° = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

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

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строки

Если БтрНайти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, "ΠžΠ¨Π˜Π‘ΠšΠ") > 0 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-сСрвис

Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ большой тСкст Ρ‡Π΅Ρ€Π΅Π· SOAP, Ρ€Π°Π·Π±Π΅ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° части ΠΈ отправляйтС ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ:

// На сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ВСкст = "... ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ тСкст ...";

Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² = 100000; // 100 ΠšΠ‘

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² = Π¦Π΅Π»(Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст) / Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ²) + 1;

Для ΠΠΎΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚Π° = 0 По ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² - 1 Π¦ΠΈΠΊΠ»

ΠŸΠ°ΠΊΠ΅Ρ‚ = Π‘Ρ€Π΅Π΄(ВСкст, ΠΠΎΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚ * Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² + 1, Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ²);

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΠŸΠ°ΠΊΠ΅Ρ‚ΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€(ΠΠΎΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚Π°, ΠŸΠ°ΠΊΠ΅Ρ‚);

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

На сторонС сСрвСра ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ тСкст.

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‡Π΅Π½ΡŒ большими тСкстами всСгда ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΠΉΡ‚Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ограничСния 1Π‘, Π½ΠΎ ΠΈ ограничСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

FAQ: ЧастыС вопросы ΠΎ строках Π² 1Π‘

МоТно Π»ΠΈ Π² 1Π‘ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ строку Π΄Π»ΠΈΠ½ΠΎΠΉ 1 Π“Π‘?

ВСорСтичСски β€” Π΄Π°, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ НСограничСннаяБтрока ΠΈ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с ограничСниями:

  • πŸ–₯️ 32-битная вСрсия 1Π‘ Π½Π΅ смоТСт Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ памяти.
  • πŸ—ƒοΈ ΠŸΡ€ΠΈ сохранСнии Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ограничСния Π‘Π£Π‘Π”.
  • πŸ”„ ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ сСти β€” ограничСния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Для Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ спСциализированныС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

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

Ѐункция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚. Для ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, UTF-8) Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ…:

ВСкст = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚! 😊";

Π”Π»ΠΈΠ½Π°Π’Π‘Π°ΠΉΡ‚Π°Ρ… = Π‘Π°ΠΉΡ‚.Π”Π»ΠΈΠ½Π°(ВСкст, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 12 (Π° Π½Π΅ 8)

Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Π³Π΄Π΅ ограничСния Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SMTP ΠΈΠ»ΠΈ MIME).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк Π² Ρ†ΠΈΠΊΠ»Π΅ 1Π‘ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚?

КаТдая опСрация Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€ΠΎΠΊΠ° + ΠΠΎΠ²Π°ΡΠ§Π°ΡΡ‚ΡŒ создаёт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΡƒΠ΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· старой строки. ΠŸΡ€ΠΈ большом количСствС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ:

  • 🐒 Π—Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡŽ ΠΈΠ·-Π·Π° постоянного выдСлСния памяти.
  • πŸ—‘οΈ Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΡƒΡ‡ΠΈ (heap fragmentation).
  • πŸ’₯ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ памяти.

РСшСниС β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ НСограничСннаяБтрока ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Массив/БписокЗначСний с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ объСдинСниСм Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ().

Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ строки с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ рСгистра?

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сравнСниС строк Π² 1Π‘ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру:

"ΠŸΡ€ΠΈΠ²Π΅Ρ‚" = "ΠΏΡ€ΠΈΠ²Π΅Ρ‚" // Π›ΠΎΠΆΡŒ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° рСгистра, ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠ±Π΅ строки ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ рСгистру:

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°2 = "ΠΏΠ ΠΈΠ’Π΅Π’";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = НРСг(Π‘Ρ‚Ρ€ΠΎΠΊΠ°1) = НРСг(Π‘Ρ‚Ρ€ΠΎΠΊΠ°2); // Π˜ΡΡ‚ΠΈΠ½Π°

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΠ΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠšΠ Π΅Π³ΠΈΡΡ‚Ρ€Ρƒ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°1, Π‘Ρ‚Ρ€ΠΎΠΊΠ°2, ΠΠ΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠšΠ Π΅Π³ΠΈΡΡ‚Ρ€Ρƒ.Π”Π°);
МоТно Π»ΠΈ Π² 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ со строками?

НСт, для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ², изобраТСния) Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ ΠΊΠ°ΠΊ со строками ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ:

  • πŸ”₯ ΠŸΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ символы Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹).
  • πŸ”  ИскаТСнию ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ.
  • πŸ’₯ Ошибкам ΠΏΡ€ΠΈ сохранСнии/Ρ‡Ρ‚Π΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:

Π”Π°Π½Π½Ρ‹Π΅ = Новый Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅("C:\image.png");

Π—Π°ΠΏΠΈΡΡŒ = Новый Π—Π°ΠΏΠΈΡΡŒΠ”Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ…Π”Π°Π½Π½Ρ‹Ρ…("C:\copy.png");

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(Π”Π°Π½Π½Ρ‹Π΅);

Π—Π°ΠΏΠΈΡΡŒ.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ();