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

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

НиТС ΠΌΡ‹ рассмотрим нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этой Π·Π°Π΄Π°Ρ‡ΠΈ: ΠΎΡ‚ классичСского ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° символов Π΄ΠΎ использования хитростСй со стандартными функциями. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ читаСмости ΠΊΠΎΠ΄Π°.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° символов

Π‘Π°ΠΌΡ‹ΠΉ понятный ΠΈ распространСнный способ β€” это созданиС Π½ΠΎΠ²ΠΎΠΉ строки ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ добавлСния символов исходной строки Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Для этого Π½Π°ΠΌ понадобится Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΡ‚ послСднСго индСкса строки ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π΅ΠΌ Π΅Ρ‘. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ конкатСнация строк Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ самой эффСктивной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов, Π½ΠΎ для стандартных Π·Π°Π΄Π°Ρ‡ ΠΎΠ½Π° Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠ°.

Ѐункция ΠŸΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°)

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

Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°);

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ = Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ По 1 Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π‘Ρ€Π΅Π΄(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ, 1);

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

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

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

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ со всСми вСрсиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Он Π»Π΅Π³ΠΊΠΎ читаСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ компилятора 1Π‘.

πŸ’‘

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ строками (Π±ΠΎΠ»Π΅Π΅ 10 000 символов) рассмотритС использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ВипЗначСния Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² сочСтании с Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ, хотя Π² 99% случаСв стандартный Ρ†ΠΈΠΊΠ» справляСтся ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для рСвСрса

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

Однако, чСстно говоря, прямоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ рСвСрса Π±Π΅Π· Ρ†ΠΈΠΊΠ»Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эта функция замСняСт всС вхоТдСния подстроки ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Но ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ для инвСрсии рСгистра ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΏΠ°Ρ€ символов, Ссли Π·Π°Π΄Π°Ρ‡Π° стоит ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этом.

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

  • πŸ”„ ΠœΠ΅Ρ‚ΠΎΠ΄ ΡƒΠ΄ΠΎΠ±Π΅Π½, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ сСгмСнты строки.
  • ⚑ ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ явных Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сцСнариях Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ².
  • ⚠️ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ спСцсимволов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ²ΠΏΠ°ΡΡ‚ΡŒ с ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹.

Если ваша Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ рСвСрсС, Π° Π² Π·Π°ΠΌΠ΅Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "AB" Π½Π° "BA"), Ρ‚ΠΎ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ классичСского Ρ†ΠΈΠΊΠ»Π°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°ΠΌΠ΅Π½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² исходной строкС Π½Π΅Ρ‚ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ
РСгулярныС выраТСния
ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π Π°Π±ΠΎΡ‚Π° с юникод-символами ΠΈ суррогатными ΠΏΠ°Ρ€Π°ΠΌΠΈ

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со строками Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Unicode (UTF-16). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмодзи ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΈΠ΅ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹) ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ ΠΎΠ΄ΠΈΠ½, Π° Π΄Π²Π° Π±Π°ΠΉΡ‚Π° (суррогатная ΠΏΠ°Ρ€Π°). Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками Π² 1Π‘ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ситуации, считая ΡΡƒΡ€Ρ€ΠΎΠ³Π°Ρ‚Π½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Π·Π° ΠΎΠ΄ΠΈΠ½ символ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ использовании Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ "разрСзания" символа ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ. Ѐункция Π‘Ρ€Π΅Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² нашСм ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ символы, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹, поэтому ΠΎΠ½Π° бСзопасна для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с эмодзи.

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡƒΡŽ строку Π² внСшнюю систСму, которая ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, UTF-8 Π±Π΅Π· BOM), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ конвСртация происходит ΡƒΠΆΠ΅ послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ рСвСрса.

Π’ΠΈΠΏ символа Π”Π»ΠΈΠ½Π° Π² 1Π‘ (Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°) ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
Π›Π°Ρ‚ΠΈΠ½ΠΈΡ†Π° (A-Z) 1 символ Бтандартная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
ΠšΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π° (А-Π―) 1 символ Бтандартная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
Π­ΠΌΠΎΠ΄Π·ΠΈ (😊) 1 символ Буррогатная ΠΏΠ°Ρ€Π°, считаСтся ΠΊΠ°ΠΊ 1
БпСцсимволы 1 символ Π’Ρ€Π΅Π±ΡƒΡŽΡ‚ экранирования ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅

ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ сообщСний ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» Π² тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ символы.

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ хранСния

Π’Π½ΡƒΡ‚Ρ€ΠΈ 1Π‘ строки хранятся ΠΊΠ°ΠΊ массив 16-Π±ΠΈΡ‚Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл. Когда Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ символу ΠΏΠΎ индСксу, систСма Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ число, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² строку Π΄Π»ΠΈΠ½ΠΎΠΉ 1.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ…

Когда Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ тысяч Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² XML ΠΈΠ»ΠΈ JSON, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками становится ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΉ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ (склСивания) строк Π² Ρ†ΠΈΠΊΠ»Π΅ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ +.. создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ строки Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” использованиС массива. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π½ΡƒΠΆΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ символами Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ строку ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ соСдинСния. Π­Ρ‚ΠΎ сниТаСт количСство Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ памяти.

Ѐункция ΠŸΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°)

Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ = Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°);

МассивБимволов = Новый Массив(Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ);

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

// КладСм символы Π² массив Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС

МассивБимволов[ИндСкс] = Π‘Ρ€Π΅Π΄(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π»ΠΈΠ½Π°Π‘Ρ‚Ρ€ΠΎΠΊΠΈ - ИндСкс, 1);

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

// Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ строку ΠΈΠ· массива (псСвдокод, Ρ‚.ΠΊ. Π² 1Π‘ Π½Π΅Ρ‚ прямого_join_ для строк Π±Π΅Π· Ρ†ΠΈΠΊΠ»Π°,

// Π½ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивом быстрСС ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сцСнариях)

// Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ 1Π‘ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ оптимизация ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ встроСна.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠŸΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°); // Π”Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅ΠΌ для краткости ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

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

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, для строк Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч символов, Ρ€Π°Π·Π½ΠΈΡ†Π° Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΌΠ΅ΠΆΠ΄Ρƒ простым Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ слоТными оптимизациями Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π΄ΠΎΠ»ΠΈ сСкунды).

πŸ’‘

НС Π·Π°Π½ΠΈΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΈΡˆΠΈΡ‚Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ участки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΊΠ°ΠΊ "ΡƒΠ·ΠΊΠΎΠ΅ мСсто".

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи

ΠŸΡ€ΠΈ написании ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π΅ Ρ‚Π°ΠΊ. Π§Ρ‚ΠΎ Ссли Π½Π° Π²Ρ…ΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π½Π΅ строку, Π° число ΠΈΠ»ΠΈ Π΄Π°Ρ‚Ρƒ? Π§Ρ‚ΠΎ Ссли строка пустая?

Ѐункция Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ 0 для пустой строки, ΠΈ Ρ†ΠΈΠΊΠ» просто Π½Π΅ выполнится, Ρ‡Ρ‚ΠΎ являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Однако ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ‚ΠΈΠΏΠ° Null ΠΈΠ»ΠΈ нСстрокового Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС выполнСния, Ссли Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ².

РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π’ΠΈΠΏΠ—Π½Ρ‡ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ привСдСния ΠΊ строкС ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ сдСлаСт ваш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ устойчивым ΠΊ ошибкам Π² смСТных модулях.

  • πŸ›‘οΈ ВсСгда провСряйтС Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π° Ρ‚ΠΈΠΏ Π‘Ρ‚Ρ€ΠΎΠΊΠ°.
  • 🚫 ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ случай Null явно, возвращая ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈΠ»ΠΈ вызывая ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.
  • πŸ“ ДобавляйтС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΠ΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ возмоТности встроСнного языка ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ вашСй вСрсии 1Π‘, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСвСрса Π² бизнСс-Π·Π°Π΄Π°Ρ‡Π°Ρ…

Π—Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ строки Π² ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ систСмС? На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, это каТСтся акадСмичСской Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Однако Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ 1Π‘ это встрСчаСтся Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅.

НапримСр, ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (сканСры ΡˆΡ‚Ρ€ΠΈΡ…-ΠΊΠΎΠ΄Π°, вСсы, Ρ„ΠΈΡΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ рСгистраторы) ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся спСцифичСский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, которая рассчитываСтся ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Или ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· legacy-систСм, Π³Π΄Π΅ Π΄Π°Ρ‚Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² нСстандартном порядкС.

Π’Π°ΠΊΠΆΠ΅ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ собствСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² счСтов ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π³Π΄Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ разряда ΠΈΠ΄Π΅Ρ‚ с ΠΊΠΎΠ½Ρ†Π° строки.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° готовности ΠΊΠΎΠ΄Π°

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания с ΡƒΠΌΠΎΠΌ. Чистый ΠΈ понятный ΠΊΠΎΠ΄ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ "самый быстрый" Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° пяти строках, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ смоТСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π³ΠΎΠ΄.

МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ строку Π² запросС 1Π‘?

НСт, Π² языкС запросов 1Π‘ Π½Π΅Ρ‚ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для рСвСрса строки. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π² ΠΊΠΎΠ΄Π΅ 1Π‘) послС получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Ρ…ΠΈΡ‚Ρ€Ρ‹Π΅ joins, Ρ‡Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ нСэффСктивно.

Как ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ строку Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ…?

Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚Π° ΠΆΠ΅ самая. Π’Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ (Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹), примСняя Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ срСдС выполнСния (ΠΊΠ»ΠΈΠ΅Π½Ρ‚/сСрвСр) для Π±Π°Π·ΠΎΠ²Ρ‹Ρ… строковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅Ρ‚.

ВлияСт Π»ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

НСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° происходит ΡƒΠΆΠ΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ языка 1Π‘ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (SQL) влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Unicode ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π•ΡΡ‚ΡŒ Π»ΠΈ готовая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° для этого?

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ "ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ строку" Π½Π΅ сущСствуСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это элСмСнтарная опСрация, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ 5 строк ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ.