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

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

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: функция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°

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

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘ΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

Ѐункция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΎ всСх вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.x ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ пустыС строки (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:

  • πŸ“Œ ΠŸΡ€ΠΎΡΡ‚Π°Ρ строка: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("ΠŸΡ€ΠΈΠ²Π΅Ρ‚") Π²Π΅Ρ€Π½Π΅Ρ‚ 6
  • πŸ“Œ Π‘Ρ‚Ρ€ΠΎΠΊΠ° с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(" 1Π‘ 8.3") Π²Π΅Ρ€Π½Π΅Ρ‚ 7 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 2 ΠΏΡ€ΠΎΠ±Π΅Π»Π° спСрСди ΠΈ 2 сзади)
  • πŸ“Œ ΠŸΡƒΡΡ‚Π°Ρ строка: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("") Π²Π΅Ρ€Π½Π΅Ρ‚ 0
  • πŸ“Œ Π‘Ρ‚Ρ€ΠΎΠΊΠ° с пСрСносами: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("ΠŸΠ΅Ρ€Π²Π°Ρ строка|Вторая строка") Π²Π΅Ρ€Π½Π΅Ρ‚ 26 (символ | считаСтся ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ символ)

НапримСр, Ссли Π² строкС Π΅ΡΡ‚ΡŒ символ табуляции (Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Π°Π±), ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ засчитан ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ символ. Π­Ρ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников (Excel, XML), Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы.

πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… символов (ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ пСрСносы), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ + Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°. НапримСр: Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"","")).

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: функция Len ΠΈΠ· глобального контСкста

Помимо Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°, Π² 1Π‘ доступна функция Len, которая являСтся синонимом ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ. Π•Π΅ основноС прСимущСство β€” Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ синтаксис, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ написании ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

КолвоБимволов = Len(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Len ΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π½Π΅Ρ‚ β€” ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Однако Π΅ΡΡ‚ΡŒ нюанс: Π² старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π΄ΠΎ 8.2) Len ΠΌΠΎΠ³ вСсти сСбя Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Unicode-строками. Π’ соврСмСнных Ρ€Π΅Π»ΠΈΠ·Π°Ρ… (8.3.20+) эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна, Π½ΠΎ Ссли Π²Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ совмСстимости.

Ѐункция Бинтаксис ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unicode РСкомСндация
Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π”Π° (всС вСрсии) βœ… ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Len Len(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π”Π° (начиная с 8.3.10) ⚠️ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π½ΡŽΠ°Π½ΡΡ‹ Π² старых вСрсиях
StrLen (Π°Π½Π³Π».) StrLen(String) Π”Π° ❌ НС рСкомСндуСтся (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ синтаксис)

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с многоязычными конфигурациями, Π³Π΄Π΅ строки ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ символы ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹, Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹, ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ количСство символов нСзависимо ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ. НапримСр, строка "ΠŸΡ€ΠΈΠ²Π΅Ρ‚ Hello" Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ 15 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹).

πŸ“Š ΠšΠ°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для подсчСта символов Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°
Len
ОбС ΠΏΠΎΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ
Π”Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

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

Один ΠΈΠ· распространСнных источников ошибок β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых строк ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NULL. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² Ρ‚Π°ΠΊΠΈΡ… случаях:

  • πŸ”Ή ΠŸΡƒΡΡ‚Π°Ρ строка (""): ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ 0.
  • πŸ”Ή НСопрСдСлСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (НСопрСдСлСно): Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ {ΠžΠ±Ρ‰ΠΈΠΉΠœΠΎΠ΄ΡƒΠ»ΡŒ.ΠœΠΎΠ΄ΡƒΠ»ΡŒ1(17)}: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся строкой (НСопрСдСлСно).
  • πŸ”Ή NULL Π² запросах: ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ NULL прСобразуСтся Π² НСопрСдСлСно, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок, всСгда провСряйтС Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ подсчСтом символов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ бСзопасного ΠΊΠΎΠ΄Π°:

Ѐункция ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π»ΠΈΠ½ΡƒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

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

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

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ 0; // ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

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

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· запросов 1Π‘. Если ΠΏΠΎΠ»Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ NULL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ:

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

Запрос.ВСкст ="ВЫБРАВЬ НаимСнованиС Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура";

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

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ;

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π¦ΠΈΠΊΠ»

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.НаимСнованиС) Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.НаимСнованиС));

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

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(НСопрСдСлСно)?

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с тСкстом"{Π˜ΠΌΡΠœΠΎΠ΄ΡƒΠ»Ρ(НомСрБтроки)}: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся строкой (НСопрСдСлСно)". Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ НСопрСдСлСно Π½Π΅ являСтся строковым Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ функция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Unicode ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ символами

Π‘ появлСниСм ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Unicode Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с символами, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹, эмодзи, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ символы ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π·Π½Π°ΠΊ, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

  • 🌍 Π‘ΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Π½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‹: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π΄ΠΊΠΈΠ΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи с ΠΊΠΎΠΆΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ½Π°ΠΌΠΈ) ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ двумя 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ значСниями. 1Π‘ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ символ.
  • 🌍 ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ символы: диакритичСскиС Π·Π½Π°ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π² словах) ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы. Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° посчитаСт ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.
  • 🌍 Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Π»Π°Π³ России (πŸ‡·πŸ‡Ί) состоит ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ 1Π‘ посчитаСт ΠΊΠ°ΠΊ Π΄Π²Π° символа.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с эмодзи:

Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π‘Π­ΠΌΠΎΠ΄Π·ΠΈ ="ΠŸΡ€ΠΈΠ²Π΅Ρ‚ 😊!";

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π‘Π­ΠΌΠΎΠ΄Π·ΠΈ)); // Π’Π΅Ρ€Π½Π΅Ρ‚ 8 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈ эмодзи ΠΊΠ°ΠΊ 1 символ)

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки Π² Π±Π°ΠΉΡ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ внСшнюю систСму с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡƒ), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅:

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

Π Π°Π·ΠΌΠ΅Ρ€Π’Π‘Π°ΠΉΡ‚Π°Ρ… = Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.Π Π°Π·ΠΌΠ΅Ρ€; // Π’Π΅Ρ€Π½Π΅Ρ‚ 12 (6 символов * 2 Π±Π°ΠΉΡ‚Π° Π² UTF-8)

πŸ’‘

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ количСство логичСских символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚ΠΎΠ². Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ прСдставлСниями строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строк Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строки часто трСбуСтся для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии:

  1. πŸ“ Валидация Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ количСства символов Π² Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°Ρ… справочников ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
  2. πŸ“Š Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²: ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π»ΠΈΠΌΠΈΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ).
  3. πŸ”„ ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° соотвСтствия строк ограничСниям Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 255 символов для наимСнования Π² XML).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠ΅Ρ€Π΅Π΄Π—Π°ΠΏΠΈΡΡŒΡŽ(ΠžΡ‚ΠΊΠ°Π·)

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(НаимСнованиС) > 100 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НаимСнованиС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 100 символов!");

ΠžΡ‚ΠΊΠ°Π· = Π˜ΡΡ‚ΠΈΠ½Π°;

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

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

Для ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ строки Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π›Π΅Π² ΠΈΠ»ΠΈ Π‘Ρ€Π΅Π΄:

БокращСнноСНаимСнованиС = Π›Π΅Π²(НаимСнованиС, 50); // ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 50 символов

// Или с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ многоточия:

Если Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(НаимСнованиС) > 50 Π’ΠΎΠ³Π΄Π°

БокращСнноСНаимСнованиС = Π›Π΅Π²(НаимСнованиС, 47) +"..";

Π˜Π½Π°Ρ‡Π΅

БокращСнноСНаимСнованиС = НаимСнованиС;

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

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с многострочными полями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…) ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ символы пСрСноса строки (Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ) Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСсто. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство строк Π² тСкстС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрЧислоБтрок:

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ‚Ρ€ΠΎΠΊ = БтрЧислоБтрок(ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚);

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ НСопрСдСлСно|Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ строка Π½Π΅ пустая (Ссли ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ)|Π£Ρ‡Ρ‚ΠΈΡ‚Π΅ ограничСния внСшнСй систСмы (Ссли Π΅ΡΡ‚ΡŒ)|ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Unicode|ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π΅Π·ΠΊΠ΅ строк-->

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Ρ‡Ρ‚ΠΎ быстрСС β€” Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈΠ»ΠΈ Len?

ΠŸΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈ Len? ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ тСсты Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.22 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚:

  • πŸ“ˆ 1 000 000 Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²: Ρ€Π°Π·Π½ΠΈΡ†Π° составляСт ΠΌΠ΅Π½Π΅Π΅ 0.1 сСкунды Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Len.
  • πŸ“ˆ Π Π°Π±ΠΎΡ‚Π° с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками (10 000+ символов): ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.
  • πŸ“ˆ Π’ Ρ†ΠΈΠΊΠ»Π΅: Len Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС Π·Π° счСт Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ (мСньшС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° Π²Ρ‹Π·ΠΎΠ²).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ тСста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Начало = ВСкущаяДата;

Для Инд = 1 По 1000000 Π¦ΠΈΠΊΠ»

Π”Π»ΠΈΠ½Π° = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("ВСстовая строка для измСрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ");

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°:" + Π‘Ρ‚Ρ€ΠΎΠΊΠ°(ВСкущаяДата - Начало));

Начало = ВСкущаяДата;

Для Инд = 1 По 1000000 Π¦ΠΈΠΊΠ»

Π”Π»ΠΈΠ½Π° = Len("ВСстовая строка для измСрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ");

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Len:" + Π‘Ρ‚Ρ€ΠΎΠΊΠ°(ВСкущаяДата - Начало));

Π’Ρ‹Π²ΠΎΠ΄: Ссли Π²Π°ΠΌ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Len. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях Ρ€Π°Π·Π½ΠΈΡ†Π° нСсущСствСнна, ΠΈ Π²Ρ‹Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° читаСмости ΠΊΠΎΠ΄Π°.

πŸ’‘

Для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ строк вынСситС подсчСт Π΄Π»ΠΈΠ½Ρ‹ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. НапримСр, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ рассчитайтС Π΄Π»ΠΈΠ½Ρ‹ всСх строк ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈΡ… Π² массивС.

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

Π”Π°ΠΆΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΉ простой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ подсчСт символов, программисты 1Π‘ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки. Рассмотрим самыС распространСнныС:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JSON ΠΈΠ»ΠΈ XML), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ строка Π½Π΅ содСрТит Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, #13#10 для пСрСноса строки). Они Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ Π² ΠΎΠ±Ρ‰Π΅ΠΉ Π΄Π»ΠΈΠ½Π΅, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅.
  • ❌ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ NULL: ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° для НСопрСдСлСно ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС. ВсСгда провСряйтС значСния Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΡΡ‚ΡŒ.
  • ❌ ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ: ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ANSI символы ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 1 Π±Π°ΠΉΡ‚, Π° Π² UTF-8 β€” 2 Π±Π°ΠΉΡ‚Π°. Π­Ρ‚ΠΎ Π½Π΅ влияСт Π½Π° Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.
  • ❌ НСучСт ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²: Ссли Π²Ρ‹ сравниваСтС Π΄Π»ΠΈΠ½Ρƒ строки с Π»ΠΈΠΌΠΈΡ‚ΠΎΠΌ, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ табуляции Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ символами.
  • ❌ Ошибки ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π΅Π·ΠΊΠ΅: использованиС Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π»ΠΈΠ½Π°) Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС, Ссли Π”Π»ΠΈΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ строки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ бСзопасной ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ строки:

Ѐункция ΠžΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠœΠ°ΠΊΡΠ”Π»ΠΈΠ½Π°)

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

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

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π‘Ρ‚Ρ€ΠΎΠΊΠ°;

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

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° типичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” нСкоррСктная Ρ€Π°Π±ΠΎΡ‚Π° с строками, содСрТащими символы с Π΄ΠΈΠ°ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π—Γ‘ΠΌΠΎΠΊ"). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ… Ρ‚Π°ΠΊΠΈΠ΅ символы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄Π²Π° Π·Π½Π°ΠΊΠ°, Π½ΠΎ 1Π‘ посчитаСт ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ строки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для выравнивания Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ШиринаВСкста ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ.

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками Π² 1Π‘

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ String.Length ΠΊΠ°ΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования?

НСт, Π² 1Π‘ Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ строкам. ВмСсто Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Length ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΈΠ»ΠΈ Len. Однако Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.3.20+) появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² строк Π² стилС OOP, Π½ΠΎ .Length срСди Π½ΠΈΡ… Π½Π΅Ρ‚.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°("ΠŸΡ€ΠΈΠ²Π΅Ρ‚") Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 6, Π° Π² Π±Π°ΠΉΡ‚Π°Ρ… эта строка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 12?

Ѐункция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° считаСт количСство символов, Π° Π½Π΅ Π±Π°ΠΉΡ‚ΠΎΠ². Π’ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-16 (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 1Π‘ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8).Π Π°Π·ΠΌΠ΅Ρ€.

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

Для подсчСта слов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ БтрЧислоВхоТдСний:

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Π»ΠΎΠ² = БтрЧислоВхоТдСний(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"",""),"") + 1;

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ замСняСт Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π½Π° ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅, Π·Π°Ρ‚Π΅ΠΌ считаСт количСство ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ добавляСт 1 (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ количСство слов = количСство ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² + 1).

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ подсчСтом:

Π”Π»ΠΈΠ½Π°Π‘Π΅Π·ΠŸΡ€ΠΎΠ±Π΅Π»ΠΎΠ² = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"",""));

Если Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ табуляции ΠΈ пСрСносы строк), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ рСгулярныС выраТСния:

Π”Π»ΠΈΠ½Π°Π‘Π΅Π·ΠŸΡ€ΠΎΠ±Π΅Π»ΠΎΠ² = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ Π΅Π³(Π‘Ρ‚Ρ€ΠΎΠΊΠ°,"\s",""));
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ экспортС Π² Excel строки ΠΎΠ±Ρ€Π΅Π·Π°ΡŽΡ‚ΡΡ, хотя Π² 1Π‘ Π΄Π»ΠΈΠ½Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ?

Excel ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ ячСйки (32 767 символов). Если ваша строка Π΄Π»ΠΈΠ½Π½Π΅Π΅, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π΅Π·Π°Π½Π°. РСшСния:

  1. Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ тСкст Π½Π° нСсколько ячССк.
  2. ЭкспортируйтС Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ .csv ΠΈΠ»ΠΈ .txt Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΠ€Π°ΠΉΠ» для сохранСния Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… тСкстов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.