ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ символов Π² строкС β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ², ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с внСшними систСмами, Π³Π΄Π΅ ограничСния ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ строки ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹. НапримСр, ΠΏΡ€ΠΈ экспортС Π΄Π°Π½Π½Ρ‹Ρ… Π² XML ΠΈΠ»ΠΈ JSON ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… строк, Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с SMS-сообщСниями β€” ΡƒΡ‡Ρ‘Ρ‚ ограничСния Π² 70 ΠΈΠ»ΠΈ 160 символов.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ языков ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Python ΠΈΠ»ΠΈ JavaScript), Π³Π΄Π΅ для этой Π·Π°Π΄Π°Ρ‡ΠΈ Π΅ΡΡ‚ΡŒ стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ .length, Π² 1Π‘ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ зависит ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚ΠΈΠΏΠ° строки (однобайтовая ΠΈΠ»ΠΈ Unicode) ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ всС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ способы подсчёта символов β€” ΠΎΡ‚ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ символами (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°, ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹) ΠΈ спСцсимволами.

Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ 1Π‘, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅: ΠΌΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ с простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ постСпСнно ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ слоТным сцСнариям. ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°ΠΉΠ΄ΡƒΡ‚ здСсь ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими ΠΎΠ±ΡŠΡ‘ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сравнСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

πŸ“Š Как часто Π²Π°ΠΌ приходится ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ символы Π² 1Π‘?
Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ
НСсколько Ρ€Π°Π· Π² нСдСлю
Рядом
Никогда

1. ВстроСнная функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°: Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

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

Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(<Π‘Ρ‚Ρ€ΠΎΠΊΠ°>)

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

  • πŸ“Œ ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ символов Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ строкС: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!") Π²Π΅Ρ€Π½Ρ‘Ρ‚ 12.
  • πŸ“Œ Π Π°Π±ΠΎΡ‚Π° с пустой строкой: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("") Π²Π΅Ρ€Π½Ρ‘Ρ‚ 0.
  • πŸ“Œ Unicode-символы: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("ΠŸΡ€ΠΈΠ²Π΅Ρ‚,!") Π²Π΅Ρ€Π½Ρ‘Ρ‚ 10 (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π° + 2 ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Π°).

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ логичСскиС символы, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹. НапримСр, символ "Ρ‘" Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°, Π½ΠΎ функция Π²Π΅Ρ€Π½Ρ‘Ρ‚ 1. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Ρ‘ ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ прСдставлСниСм.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 7.7 функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ для строк с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ символами. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ со старыми конфигурациями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (см. Ρ€Π°Π·Π΄Π΅Π» 4).
πŸ’‘

Π§Ρ‚ΠΎΠ±Ρ‹ быстро ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ 1Π‘, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π’Π°ΡˆΠ°Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π² список отслСТиваСмых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² сообщСниС Ρ‡Π΅Ρ€Π΅Π· Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ.

2. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: функция БтрЧислоБимволов

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовыми Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ полями HTML) ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрЧислоБимволов. Она Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста.

Бинтаксис:

БтрЧислоБимволов(<Π‘Ρ‚Ρ€ΠΎΠΊΠ°>, <Π Π΅ΠΆΠΈΠΌ>)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ <Π Π΅ΠΆΠΈΠΌ> ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

  • πŸ”Ή 0 β€” подсчёт всСх символов (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).
  • πŸ”Ή 1 β€” подсчёт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… символов (ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, табуляции, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ строк).
  • πŸ”Ή 2 β€” подсчёт слов (Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ β€” ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ прСпинания).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

// ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ всСх символов (Π°Π½Π°Π»ΠΎΠ³ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°)

БтрЧислоБимволов(" ΠŸΡ€ΠΈΠ²Π΅Ρ‚!", 0); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 10 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹)

// ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… символов

БтрЧислоБимволов(" ΠŸΡ€ΠΈΠ²Π΅Ρ‚!", 1); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 7

// ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ слов

БтрЧислоБимволов("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€! Как Π΄Π΅Π»Π°?", 2); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 4

Π­Ρ‚Π° функция особСнно ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ тСкстовых ΠΏΠΎΠ»Π΅ΠΉ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°Ρ…, Π³Π΄Π΅ трСбуСтся ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слуТСбныС символы. НапримСр, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ коммСнтария ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° минимальноС количСство Π·Π½Π°ΠΊΠΎΠ² (Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²).

3. ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ символов Π² Ρ†ΠΈΠΊΠ»Π΅: ΠΊΠΎΠ³Π΄Π° стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ подходят

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

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ счётчик (ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 0).
  2. ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ строкС посимвольно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° Для.
  3. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа выполняСм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (ΠΏΡ€ΠΈ нСобходимости).
  4. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик, Ссли символ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄ условия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

Ѐункция ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ = Π˜ΡΡ‚ΠΈΠ½Π°) Экспорт

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 0;

Для ИндСкс = 1 По Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π¦ΠΈΠΊΠ»

Π‘ΠΈΠΌΠ²ΠΎΠ» = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ИндСкс, 1);

Если Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ Или Π‘ΠΈΠΌΠ²ΠΎΠ» <>"" Π’ΠΎΠ³Π΄Π°

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ + 1;

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

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ;

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ›  Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ условия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΈ прСпинания ΠΈΠ»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹).
  • πŸ“Š Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для нСстандартных Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° дСтализация.

НСдостатки:

  • ⏳ МСдлСннСС стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (особСнно для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк).
  • πŸ“œ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС ΠΊΠΎΠ΄Π° ΠΈ тСстирования.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками (Π±ΠΎΠ»Π΅Π΅ 10 000 символов) Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ рСгулярныС выраТСния (см. Ρ€Π°Π·Π΄Π΅Π» 5).

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ Ρ†ΠΈΠΊΠ» для Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ стандартными функциями?|Π”Π»ΠΈΠ½Π° строки Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 10 000 символов?|Π£Ρ‡Ρ‚Ρ‘Π½Ρ‹ всС условия Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ символов?|ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΠΊΠΎΠ΄ Π½Π° пустой строкС ΠΈ строкС с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ?-->

4. Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ символами ΠΈ Unicode

Если ваша конфигурация Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с многоязычными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°, ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹, арабская вязь), Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ 1Π‘ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ символы. Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.3.10+) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UTF-16, Π³Π΄Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ символов Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 2 Π±Π°ΠΉΡ‚Π°, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΈΠ΅ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 4 Π±Π°ΠΉΡ‚Π°).

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ подсчёта символов Π² Ρ‚Π°ΠΊΠΈΡ… случаях:

  1. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° β€” ΠΎΠ½Π° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ логичСскиС символы, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹.
  2. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅, Ссли Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ особСнностСй ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ.
  3. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π»ΠΈΠ½Ρ‹ строки Π² Π±Π°ΠΉΡ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними API) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:
Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅("Π’Π°ΡˆΠ° строка", ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8);

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Π°ΠΌΠΈ:

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 10 (логичСских символов)

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.Π Π°Π·ΠΌΠ΅Ρ€); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 16 (Π±Π°ΠΉΡ‚ Π² UTF-8)

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘ 8.3.18+ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³Ρ€Π°Ρ„Π΅ΠΌΠ½Ρ‹Ρ… кластСров (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΊΠΎΠΆΠΈ ΠΈΠ»ΠΈ Ρ„Π»Π°Π³ΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ символ, Π½ΠΎ тСхничСски ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ. Для ΠΈΡ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ подсчётом.

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ логичСских символов (Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°) Π Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… (UTF-8) Π Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… (UTF-16)
"А" 1 2 2
"" 1 3 2
"πŸ‘" 1 4 4
"πŸ‡·πŸ‡Ί" (Ρ„Π»Π°Π³ России) 1 8 4

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

РСгулярныС выраТСния (regex) β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π³ΠΈΠ±ΠΊΠΎ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ символы ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ шаблонам. Π’ 1Π‘ рСгулярныС выраТСния доступны Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС (начиная с вСрсии 8.3.10).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ рСгулярныС выраТСния ΠΏΠΎΠ»Π΅Π·Π½Ρ‹:

  • πŸ” ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€ Π² строкС.
  • πŸ” Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HTML-Ρ‚Π΅Π³ΠΎΠ² ΠΏΡ€ΠΈ подсчётС.
  • πŸ” Поиск ΠΈ подсчёт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ символов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для подсчёта Π±ΡƒΠΊΠ² (игнорируя Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ символы):

Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ = Новый РСгулярноСВыраТСниС("[Π°-яА-ЯёЁa-zA-Z]");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° ="Π 1А2М3О4Π’5А6 123!";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.НайтиВсС(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 6 (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹)

Для подсчёта символов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

Ѐункция ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠŸΠΎΠ Π΅Π³ΡƒΠ»ΡΡ€ΠΊΠ΅(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π¨Π°Π±Π»ΠΎΠ½)

Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ = Новый РСгулярноСВыраТСниС(Π¨Π°Π±Π»ΠΎΠ½);

НайдСнныС = Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.НайтиВсС(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НайдСнныС.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ;

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

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования: подсчёт всСх Π·Π½Π°ΠΊΠΎΠ² прСпинания

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ—Π½Π°ΠΊΠΎΠ² = ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠŸΠΎΠ Π΅Π³ΡƒΠ»ΡΡ€ΠΊΠ΅("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€! Как Π΄Π΅Π»Π°?","[,!?;:]");

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: рСгулярныС выраТСния ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов. ВсСгда тСстируйтС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с рСгулярными выраТСниями?

1. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

2. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ слишком слоТных шаблонов β€” Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° нСсколько простых рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

3. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ строку Π½Π° части ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

6. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Рассмотрим нСсколько Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… сцСнариСв, Π³Π΄Π΅ подсчёт символов Π²Π°ΠΆΠ΅Π½ для бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: Валидация поля коммСнтария

Π—Π°Π΄Π°Ρ‡Π°: ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ коммСнтария Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ 500 символами ΠΈ вывСсти ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)

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

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½Π° максимальная Π΄Π»ΠΈΠ½Π° коммСнтария (" + ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° +" символов)!");

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π›Π΅Π²(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°);

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

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2: Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ SMS-сообщСний

Π—Π°Π΄Π°Ρ‡Π°: Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ тСкст Π½Π° части ΠΏΠΎ 70 символов (стандарт GSM).

Ѐункция Π Π°Π·Π±ΠΈΡ‚ΡŒΠΠ°SMS(ВСкст)

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

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

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

ientras ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ <= Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст) Π¦ΠΈΠΊΠ»

Π§Π°ΡΡ‚ΡŒ = Π‘Ρ€Π΅Π΄(ВСкст, ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ, ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°);

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

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ + ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°;

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

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

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 3: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π΄Π»ΠΈΠ½Ρ‹ строк ΠΏΡ€ΠΈ экспортС Π² XML

Π—Π°Π΄Π°Ρ‡Π°: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС строки Π² Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ 255 символов (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСм).

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΠ”Π»ΠΈΠ½ΡƒΠ‘Ρ‚Ρ€ΠΎΠΊ(Π”Π°Π½Π½Ρ‹Π΅)

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

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π”Π°Π½Π½Ρ‹Π΅ Π¦ΠΈΠΊΠ»

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

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅"Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ:" + Π‘Ρ‚Ρ€ΠΎΠΊΠ°;

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

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

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

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² подсчёт символов ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² бизнСс-процСсс, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ошибок ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚.

πŸ’‘

ВсСгда ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ контСкст Π·Π°Π΄Π°Ρ‡ΠΈ: для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ интСрфСйса ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ простой Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°, Π° для слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ комбинация Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

7. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими строками

Если Π²Π°ΠΌ приходится ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большиС тСксты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠ³ΠΈ, XML-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ подсчёта символов ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ΠΎΡ‚ нСсколько совСтов для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • πŸš€ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎ символам для строк Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 10 000 символов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ рСгулярныС выраТСния.
  • πŸ“₯ Π Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ большиС строки Π½Π° части ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. НапримСр:
Ѐункция ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹Π’Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠ‘Ρ‚Ρ€ΠΎΠΊΠ΅(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

Π§Π°ΡΡ‚ΡŒΠ Π°Π·ΠΌΠ΅Ρ€ = 10000;

ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π° = 0;

Для ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = 1 По Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π¦ΠΈΠΊΠ» Π§Π°ΡΡ‚ΡŒΠ Π°Π·ΠΌΠ΅Ρ€

Π§Π°ΡΡ‚ΡŒ = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ, Π§Π°ΡΡ‚ΡŒΠ Π°Π·ΠΌΠ΅Ρ€);

ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π° = ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π° + Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π§Π°ΡΡ‚ΡŒ);

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π°;

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

  • πŸ”„ ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹: Ссли ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ строка провСряСтся ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, сохранитС Π΅Ρ‘ Π΄Π»ΠΈΠ½Ρƒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
  • πŸ›  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ символы, Π° Π±Π°ΠΉΡ‚Ρ‹).

Для ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π°Π΄Π°Ρ‡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Ρ‹) рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вынСсти Π»ΠΎΠ³ΠΈΠΊΡƒ подсчёта символов Π½Π° сторону SQL ΠΈΠ»ΠΈ внСшниС скрипты (Python, PowerShell).

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.15 ΠΈ Π½ΠΈΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со строками Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 100 000 символов ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам ΠΈΠ»ΠΈ зависаниям. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ строку Π½Π° части ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ внСшниС инструмСнты.

8. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с подсчётом символов Π² 1Π‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ:

  • 🐞 Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ БтрЧислоБимволов(..., 1) ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ. ВсСгда уточняйтС трСбования ΠΊ подсчёту.
  • 🐞 ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ ΠΈ символами: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚. Для Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.
  • 🐞 НСучёт Unicode: Π² старых конфигурациях (1Π‘ 7.7 ΠΈΠ»ΠΈ 8.0) кирилличСскиС символы ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ΠžΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ.
  • 🐞 ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка ΠΏΡ€ΠΈ рСкурсивных Π²Ρ‹Π·ΠΎΠ²Π°Ρ…: Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ рСкурсии.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Unicode Π² старых вСрсиях):

// НСкоррСктно для 1Π‘ 7.7!

Π”Π»ΠΈΠ½Π° =?(Π’ΠΈΠΏΠ—Π½Ρ‡(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) = Π’ΠΈΠΏ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°"), Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°), 0);

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ (ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ для всСх вСрсий):

Ѐункция БСзопаснаяДлинаБтроки(Π‘Ρ‚Ρ€ΠΎΠΊΠ°)

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

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

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

// ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ подсчёт для старых вСрсий

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

Пока Π‘Ρ‚Ρ€ΠΎΠΊΠ° <>"" Π¦ΠΈΠΊΠ»

Π”Π»ΠΈΠ½Π° = Π”Π»ΠΈΠ½Π° + 1;

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 2);

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π”Π»ΠΈΠ½Π°;

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

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок:

  1. ВсСгда тСстируйтС ΠΊΠΎΠ΄ Π½Π° строках с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°, Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°, ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹).
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΊΡ€Π°Π΅Π²Ρ‹Π΅ случаи: пустая строка, строка ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΎΡ‡Π΅Π½ΡŒ длинная строка.
  3. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,"подсчитываСт символы Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²").
πŸ’‘

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

FAQ: ЧастыС вопросы ΠΏΠΎ подсчёту символов Π² 1Π‘

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство слов Π² строкС?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрЧислоБимволов с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ 2:

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Π»ΠΎΠ² = БтрЧислоБимволов("Π’Π°Ρˆ тСкст", 2);

Или Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ Π·Π½Π°ΠΊΠ°ΠΌ прСпинания.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для эмодзи?

Π’ вСрсиях 1Π‘ Π½ΠΈΠΆΠ΅ 8.3.18 эмодзи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 😊) ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ нСсколько символов. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ строки:

НормализованнаяБтрока = ΠΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ("ВСкст с эмодзи 😊");

Π”Π»ΠΈΠ½Π° = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(НормализованнаяБтрока);

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ символы Π² тСкстовом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ (ΠΏΠΎΠ»Π΅ HTML)?

Для поля ВСкстДокумСнта ΠΈΠ»ΠΈ HTMLΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ тСкст Π±Π΅Π· Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ:

ВСкст = ВСкстДокумСнта.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚;

Π”Π»ΠΈΠ½Π° = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(ВСкст);

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ БтрЧислоБимволов с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ 0.

МоТно Π»ΠΈ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ символы Π² Ρ„Π°ΠΉΠ»Π΅ Π±Π΅Π· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ?

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡ… построчно:

Π§Ρ‚Π΅Π½ΠΈΠ΅ = Новый ЧтСниСВСкста(ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»Ρƒ);

ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π° = 0;

Пока Π§Ρ‚Π΅Π½ΠΈΠ΅.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ Π¦ΠΈΠΊΠ»

ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π° = ΠžΠ±Ρ‰Π°ΡΠ”Π»ΠΈΠ½Π° + Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π§Ρ‚Π΅Π½ΠΈΠ΅.ВСкущаяБтрока);

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

Как ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ Π² ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎ количСству символов?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ событиС ΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)

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

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) > ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π›Π΅Π²(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ" + ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π° +" символов!");

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

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