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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы получСния Π΄Π»ΠΈΠ½Ρ‹ строки Π² 1Π‘ 8.3 ΠΈ 8.2, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Unicode-символами, пустыми строками ΠΈ массивами. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ΠΌ отличаСтся встроСнная функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Len глобального контСкста, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ строки с Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ символами ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΆΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих конфигурациях.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΡ‹ ΡƒΠ΄Π΅Π»ΠΈΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” это ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ Π΄Π°ΠΆΠ΅ микросСкунды ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ всСх способов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

1. Основной способ: функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ β€” использованиС встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°. Она Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΎ всСх вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, начиная с 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 7.7, ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост:

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

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство символов Π² строкС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ логичСскиС символы, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для строк Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ символами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π° ΠΈΠ»ΠΈ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ.

  • βœ… Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΎ всСх вСрсиях 1Π‘
  • βœ… Максимальная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
  • βœ… ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Unicode
  • ⚠️ НС ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚"Π½Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅" символы (табуляция, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки) ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты

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

ВСстоваяБтрока ="ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!";

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСстоваяБтрока)); // Π’Π΅Ρ€Π½Π΅Ρ‚ 12 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈ Π·Π°ΠΏΡΡ‚ΡƒΡŽ)

πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"","")).

2. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: Len ΠΈΠ· глобального контСкста

МСнСС извСстный, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ эффСктивный способ β€” использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Len ΠΈΠ· глобального контСкста. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ появился Π² 1Π‘ 8.2 ΠΈ прСдоставляСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² синтаксисС Π²Ρ‹Π·ΠΎΠ²Π°:

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

По Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Len ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°, поэтому Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅Ρ‚. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Len для краткости ΠΊΠΎΠ΄Π°, особСнно Π² выраТСниях:

Если Len(ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉΠ’Π²ΠΎΠ΄) < 5 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Блишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π²Π²ΠΎΠ΄!");

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

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°
Len
Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°
НС знаю Ρ€Π°Π·Π½ΠΈΡ†Ρ‹

НапримСр, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

// ΠΠ•ΠŸΠ ΠΠ’Π˜Π›Π¬ΠΠž!

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ("Len(ВСст)");

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

// ΠŸΠ ΠΠ’Π˜Π›Π¬ΠΠž

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ("Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚.Len(ВСст)");

3. Π Π°Π±ΠΎΡ‚Π° с пустыми строками ΠΈ NULL

ΠžΡΠΎΠ±Ρ‹ΠΉ случай β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых строк ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NULL. Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… нюансов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто становятся источником ошибок.

Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈΠ»ΠΈ Len Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…:

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

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

Π˜Π½Π°Ρ‡Π΅

Π”Π»ΠΈΠ½Π° = 0;

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

Для пустых строк ("") ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ 0, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. Однако ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ комбинация Π‘ΠΎΠΊΡ€Π›ΠŸ:

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘ΠΎΠΊΡ€Π›ΠŸ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)) = 0 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠ° пустая ΠΈΠ»ΠΈ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹");

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° для Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния?

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния (Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ) функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅"НСвСрный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½ΠΎΠΌΠ΅Ρ€ 1)".

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (особСнно Π΄ΠΎ 8.3.10) ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π² Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° значСния Ρ‚ΠΈΠΏΠ° Число ΠΈΠ»ΠΈ Π”Π°Ρ‚Π° ΠΎΠ½ΠΎ автоматичСски прСобразуСтся Π² строку. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ скрытым ошибкам, Ссли Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со строковыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ВсСгда провСряйтС Ρ‚ΠΈΠΏΡ‹ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²!

4. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Unicode ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹Ρ… символов

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстами Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках (китайский, японский, арабский) ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами (эмодзи, матСматичСскиС Π·Π½Π°ΠΊΠΈ) Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ 1Π‘ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Unicode.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Unicode-строками, возвращая количСство символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚ΠΎΠ². НапримСр:

ΠšΠΈΡ‚Π°ΠΉΡΠΊΠ°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° =""; //"ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€" Π½Π° китайском

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ΠšΠΈΡ‚Π°ΠΉΡΠΊΠ°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°)); // Π’Π΅Ρ€Π½Π΅Ρ‚ 4

Однако Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки Π² Π±Π°ΠΉΡ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для записи Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сСти), потрСбуСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = ВСкстВДвоичныСДанныС(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8);

Π Π°Π·ΠΌΠ΅Ρ€Π’Π‘Π°ΠΉΡ‚Π°Ρ… = Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.Π Π°Π·ΠΌΠ΅Ρ€;

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с эмодзи ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ:

  • πŸ”Ή Один эмодзи ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚ 2 Π΄ΠΎ 4 Π±Π°ΠΉΡ‚ Π² UTF-8
  • πŸ”Ή Ѐункция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° посчитаСт эмодзи ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ символ
  • πŸ”Ή ΠŸΡ€ΠΈ записи Π² ANSI-Ρ„Π°ΠΉΠ»Ρ‹ эмодзи Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Π·Π½Π°ΠΊΠΈ"?"
Π‘ΠΈΠΌΠ²ΠΎΠ» Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π Π°Π·ΠΌΠ΅Ρ€ Π² UTF-8 (Π±Π°ΠΉΡ‚) Π Π°Π·ΠΌΠ΅Ρ€ Π² Windows-1251 (Π±Π°ΠΉΡ‚)
A 1 1 1
Π― 1 2 1
😊 1 4 1 (Π±ΡƒΠ΄Π΅Ρ‚"?")
1 3 1 (Π±ΡƒΠ΄Π΅Ρ‚"?")

5. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ элСмСнтов массива строк

Часто трСбуСтся ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π½Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки, Π° всСх элСмСнтов Π² массивС строк. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ.

Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ срСди всСх строк:

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΡ€ΠΎΡ‚ΠΊΠ°Ρ");

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Длинная строка");

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("БрСдняя");

ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° = 0;

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

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

Если ВСкущаяДлина > ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°

ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° = ВСкущаяДлина;

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°); // Π’Π΅Ρ€Π½Π΅Ρ‚ 13

Для получСния суммарной Π΄Π»ΠΈΠ½Ρ‹ всСх строк:

БуммарнаяДлина = 0;

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

БуммарнаяДлина = БуммарнаяДлина + Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€);

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

β˜‘οΈ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива строк

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

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (тысячи элСмСнтов) стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ ΠΈ Π‘ΡƒΠΌΠΌΠ°:

// Максимальная длина

ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° = ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ("Π”Π»ΠΈΠ½Π°").ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ;

// Буммарная Π΄Π»ΠΈΠ½Π°

Π‘ΡƒΠΌΠΌΠ°Π”Π»ΠΈΠ½ = ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ("Π”Π»ΠΈΠ½Π°").Π‘ΡƒΠΌΠΌΠ°;

6. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: сравнСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π°. Однако ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Π² Ρ†ΠΈΠΊΠ»Π°Ρ… Π΄Π°ΠΆΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠœΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ тСстированиС Π½Π° массивС ΠΈΠ· 1 000 000 строк Π΄Π»ΠΈΠ½ΠΎΠΉ 50 символов каТдая. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ (Π² миллисСкундах):

ΠœΠ΅Ρ‚ΠΎΠ΄ 1Π‘ 8.3.20 1Π‘ 8.3.18 1Π‘ 8.2.19
Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° 412 488 610
Len 410 485 608
Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π»ΠΈΠ½Π° (ΠΌΠ΅Ρ‚ΠΎΠ΄) 398 472 Н/Π”

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

  • πŸ“Š ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π»ΠΈΠ½Π° (доступСн ΠΊΠ°ΠΊ свойство строки) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹
  • πŸ“Š Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len минимальна
  • πŸ“Š Π’ старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.2) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½ΠΈΠΆΠ΅

Для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² критичСских участках ΠΊΠΎΠ΄Π° рСкомСндуСтся:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π»ΠΈΠ½Π° вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
  2. Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… (ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚)
  3. Для массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠŸΠ°Ρ‡ΠΊΠ΅
πŸ’‘

ΠœΠ΅Ρ‚ΠΎΠ΄ строки Π”Π»ΠΈΠ½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠœΠΎΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π»ΠΈΠ½Π°) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° 3-5% быстрСС, Ρ‡Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈΠ»ΠΈ Len.

7. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π³Π΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строки ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: Валидация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΠ”Π»ΠΈΠ½ΡƒΠŸΠ°Ρ€ΠΎΠ»Ρ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Π°ΡΠ”Π»ΠΈΠ½Π° = 8;

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) < ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Π°ΡΠ”Π»ΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΠ°Ρ€ΠΎΠ»ΡŒ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ! Минимальная Π΄Π»ΠΈΠ½Π°:" + ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Π°ΡΠ”Π»ΠΈΠ½Π°);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°;

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2: Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΎΡ‚Ρ‡Π΅Ρ‚

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈΠ”Π»ΡΠžΡ‚Ρ‡Π΅Ρ‚Π°(ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ)

ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° = ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ("Π”Π»ΠΈΠ½Π°").ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ;

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

// ДополняСм строку ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π΄ΠΎ максимальной Π΄Π»ΠΈΠ½Ρ‹

ΠžΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π›Π΅Π²(Π‘Ρ‚Ρ€ + БтрНовая(ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°,""), ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°);

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

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

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 3: Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк

Ѐункция Π Π°Π·Π±ΠΈΡ‚ΡŒΠΠ°Π§Π°ΡΡ‚ΠΈ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°Π§Π°ΡΡ‚ΠΈ = 100)

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

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

ientras Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) > 0 Π¦ΠΈΠΊΠ»

Π§Π°ΡΡ‚ΡŒ = Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°Π§Π°ΡΡ‚ΠΈ);

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) > ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°Π§Π°ΡΡ‚ΠΈ Π’ΠΎΠ³Π΄Π°

// Π˜Ρ‰Π΅ΠΌ послСдний ΠΏΡ€ΠΎΠ±Π΅Π» для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ разбиСния

ΠŸΠΎΡΠ»ΠŸΡ€ΠΎΠ±Π΅Π» = Найти(Π§Π°ΡΡ‚ΡŒ,"", ΠΠ°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠŸΠΎΠΈΡΠΊΠ°.Π‘ΠšΠΎΠ½Ρ†Π°);

Если ΠŸΠΎΡΠ»ΠŸΡ€ΠΎΠ±Π΅Π» > 0 Π’ΠΎΠ³Π΄Π°

Π§Π°ΡΡ‚ΡŒ = Π›Π΅Π²(Π§Π°ΡΡ‚ΡŒ, ΠŸΠΎΡΠ»ΠŸΡ€ΠΎΠ±Π΅Π»);

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

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π§Π°ΡΡ‚ΡŒ);

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π§Π°ΡΡ‚ΡŒ) + 1);

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° для опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π±Π°ΠΉΡ‚. Для этих Ρ†Π΅Π»Π΅ΠΉ примСняйтС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ЧтСниСВСкста ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΡ‚ΠΎΠΊΠ’ΠŸΠ°ΠΌΡΡ‚ΠΈ.

ЧастыС вопросы (FAQ)

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° для Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…?

НСт, функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для строк. Для Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство Π Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅:

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ˜Π·Π€Π°ΠΉΠ»Π°("example.bin");

Π Π°Π·ΠΌΠ΅Ρ€Π’Π‘Π°ΠΉΡ‚Π°Ρ… = Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.Π Π°Π·ΠΌΠ΅Ρ€;

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 для строки с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ?

Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 для строк с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ пустой строки (""). Если Ρƒ вас строка состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΈΡ… количСство. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ"пустоту" с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘ΠΎΠΊΡ€Π›ΠŸ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)) = 0 Π’ΠΎΠ³Π΄Π°

// Π‘Ρ‚Ρ€ΠΎΠΊΠ° пустая ΠΈΠ»ΠΈ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹

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

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° HTML-Ρ‚Π΅Π³ΠΎΠ²?

Для удалСния HTML-Ρ‚Π΅Π³ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ подсчСтом Π΄Π»ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ рСгулярныС выраТСния:

Π‘Π΅Π·Π’Π΅Π³ΠΎΠ² = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠŸΠΎΠ¨Π°Π±Π»ΠΎΠ½Ρƒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"<[^>]+>","");

Π”Π»ΠΈΠ½Π°Π‘Π΅Π·Π’Π΅Π³ΠΎΠ² = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Π΅Π·Π’Π΅Π³ΠΎΠ²);

Или ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Ѐункция Π£Π΄Π°Π»ΠΈΡ‚ΡŒHTMLΠ’Π΅Π³ΠΈ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠŸΠΎΠ¨Π°Π±Π»ΠΎΠ½Ρƒ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠŸΠΎΠ¨Π°Π±Π»ΠΎΠ½Ρƒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"<[^>]+>",""),"&[a-z0-9]+;","");

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

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΈ толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅?

НСт, рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° Π²ΠΎ всСх Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ (толстый ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, сСрвСр). Π Π°Π·Π½ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… Π½Π΅Ρ‚. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… строк (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎ 1000 символов).

МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки Π² символах Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра?

Π”Π»ΠΈΠ½Π° строки Π½Π΅ зависит ΠΎΡ‚ рСгистра символов. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len Π²Π΅Ρ€Π½ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для строк"ΠŸΠ Π˜Π’Π•Π’" ΠΈ"ΠΏΡ€ΠΈΠ²Π΅Ρ‚" (6 символов). Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ строки Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ НРСг ΠΈΠ»ΠΈ Π’Π Π΅Π³ ΠΏΠ΅Ρ€Π΅Π΄ сравнСниСм, Π½ΠΎ это Π½Π΅ влияСт Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹.