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

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

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π›Π΅Π²

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

Для получСния ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ всСгда пСрСдаСтся Π΅Π΄ΠΈΠ½ΠΈΡ†Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… контСкстах выполнСния ΠΊΠΎΠ΄Π°.

Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° ="Π‘ΠΊΠ»Π°Π΄";

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = Π›Π΅Π²(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, 1);

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:"Π‘"

Однако использованиС Π›Π΅Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Если пСрСмСнная содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно ΠΈΠ»ΠΈ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, функция Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку "", Π° Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ построСнии Π»ΠΎΠ³ΠΈΠΊΠΈ условий.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π›Π΅Π² Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ пустой строки, ΠΎΠ½Π° просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. ВсСгда провСряйтС Π΄Π»ΠΈΠ½Ρƒ исходной строки ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ, Ссли Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ….

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π°

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

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

  • πŸ”Ή Бинтаксис Π‘Ρ‚Ρ€ΠΎΠΊΠ°[1] являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ способом получСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°.
  • πŸ”Ή ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ индСксу Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ символа (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² пустой строкС) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС выполнСния.
  • πŸ”Ή Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π² Ρ†ΠΈΠΊΠ»Π°Ρ… с большим количСством ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π±ΠΎΡ€Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ВСкст ="НомСнклатура";

Π‘ΠΈΠΌΠ²ΠΎΠ» = ВСкст[1];

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:"Н"

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π›Π΅Π² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… условий. Если строка пуста, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ индСксу [1] Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, Π² зависимости ΠΎΡ‚ контСкста. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ здСсь ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°.

πŸ“Š Какой способ получСния символа Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Ѐункция Π›Π΅Π²
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
НС знаю

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых строк ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно

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

БСзопасный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НСобходимо ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ пСрСмСнная Π½Π΅ Ρ€Π°Π²Π½Π° НСопрСдСлСно ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° строки большС нуля. Волько послС прохоТдСния этих ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ бСзопасно ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ конструкции с использованиСм условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

Если НС ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅) Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ—Π½Π°ΠΊ = Π›Π΅Π²(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅, 1);

Π˜Π½Π°Ρ‡Π΅

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ—Π½Π°ΠΊ ="";

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

Ѐункция ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π° ΠΊΠ°ΠΊ для пустой строки "", Ρ‚Π°ΠΊ ΠΈ для значСния НСопрСдСлСно. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ устойчивым ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Если Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ <> НСопрСдСлСно Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ символам. ΠŸΡƒΡΡ‚Π°Ρ строка Π½Π΅ Ρ€Π°Π²Π½Π° НСопрСдСлСно, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ символов для извлСчСния.

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 строка являСтся ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ собствСнными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности для манипуляции тСкстом.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ прямого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚ΠΈΠΏΠ° GetFirstChar Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅Ρ‚. Однако ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ chaining (Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²), ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ сразу Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько дСйствий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π²Π·ΡΡ‚ΡŒ символ.

  • πŸ”Έ ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Ρ€Π΅Π³ ΠΈ НрСг ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ сразу привСсти ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ рСгистру.
  • πŸ”Έ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠ΄Π° часто Π»ΡƒΡ‡ΡˆΠ΅ читаСтся Π² слоТных выраТСниях ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста.
  • πŸ”Έ ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ВСкст =" ΠΏΡ€ΠΈΠΌΠ΅Ρ€";

// УдаляСм ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ слСва ΠΈ Π±Π΅Ρ€Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ

Π‘ΠΈΠΌΠ²ΠΎΠ» = Π›Π΅Π²(Π‘ΠΎΠΊΡ€Π›(ВСкст), 1);

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π‘ΠΎΠΊΡ€Π› ΠΈ Π›Π΅Π² Π² ΠΎΠ΄Π½Ρƒ строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ символ, игнорируя слуТСбныС отступы Π² тСкстС.

ПониманиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ строка β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ доступ ΠΊ Π΅Ρ‘ свойствам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Π”Π»ΠΈΠ½Π°. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° свойства Π”Π»ΠΈΠ½Π° часто выполняСтся быстрСС ΠΈ понятнСС, Ρ‡Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, особСнно Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

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

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π±ΠΎΡ€Π° Π‘Ρ‚Ρ€ΠΎΠΊΠ°[1] ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСтся быстрСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это низкоуровнСвая опСрация доступа ΠΊ памяти, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ функция Π›Π΅Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° строки (Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ короткая).

ΠœΠ΅Ρ‚ΠΎΠ΄ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ
Ѐункция Π›Π΅Π² Высокая Высокая (Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ‚) БрСдняя
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ [1] Высокая Низкая (ошибка) Высокая
Π§Π΅Ρ€Π΅Π· Π‘Ρ€Π΅Π΄ Низкая Высокая Низкая
РСгулярныС выраТСния Низкая БрСдняя ΠžΡ‡Π΅Π½ΡŒ низкая

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1, 1) являСтся Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΈΠ·-Π·Π° избыточности синтаксиса ΠΈ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΉ скорости выполнСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со спСциализированной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π›Π΅Π².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ рСгулярныС выраТСния ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅?

РСгулярныС выраТСния Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ компиляции ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΈ создания слоТного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°_matcher, Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС рСсурсов процСссора, Ρ‡Π΅ΠΌ простой доступ ΠΊ Π±Π°ΠΉΡ‚Π°ΠΌ строки.

Для Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ бизнСса Ρ€Π°Π·Π½ΠΈΡ†Π° Π² миллисСкундах Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°. Однако ΠΏΡ€ΠΈ написании ΠΎΠ±Ρ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ постоянно, Π²Ρ‹Π±ΠΎΡ€ Π±ΠΎΠ»Π΅Π΅ быстрого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° () с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ являСтся ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Ρ‚ΠΎΠ½Π° программирования Π² 1Π‘.

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ символами

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

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

πŸ’‘

Π’ 1Π‘ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ суррогатных ΠΏΠ°Ρ€Π°Ρ… ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа стандартными срСдствами β€” ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ цСлостный графичСский символ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с внСшними Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ЧтСниСВСкста), Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ конвСртация Π² строку 1Π‘ ΠΏΡ€ΠΎΡˆΠ»Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Ошибки ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ символ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними API ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ всСгда явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ UTF-8 ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Π½Π΅ оказался тСхничСским Π±Π°ΠΉΡ‚ΠΎΠΌ BOM (Byte Order Mark), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Π½, Π½ΠΎ мСняСт Π»ΠΎΠ³ΠΈΠΊΡƒ сравнСния.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, CSV с Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой). Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сравниваСтС символы с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ рСгистра, Ссли это Π²Π°ΠΆΠ½ΠΎ для вашСй Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π’Ρ€Π΅Π³ ΠΈΠ»ΠΈ НрСг.

β˜‘οΈ Π§Π΅ΠΊ-лист бСзопасного извлСчСния символа

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5
Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ функция Π›Π΅Π², Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ число вмСсто строки?

Ѐункция Π›Π΅Π² ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ строку. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ число, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ попытаСтся нСявно привСсти Ρ‚ΠΈΠΏ. Число Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² строковоС прСдставлСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 123 станСт"123"), ΠΈ функция Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ этой строки ("1"). Однако ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ рСкомСндуСтся, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€ΠΎΠΊΠ°.

МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки Π² запросС 1Π‘?

Π”Π°, Π² языкС запросов 1Π‘ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ функция Π›Π•Π’. Бинтаксис Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ встроСнному языку: ВЫБРАВЬ Π›Π•Π’(ΠŸΠΎΠ»Π΅Π‘ΡΡ‹Π»ΠΊΠΈ, 1) КАК ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±ΡƒΠΊΠ²Π΅ названия прямо Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ, Ссли строка содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹?

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

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ символом ΠΈ Π±Π°ΠΉΡ‚ΠΎΠΌ Π² 1Π‘?

Π’ 1Π‘ строки хранятся Π² UTF-16. Один символ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΡƒΠΊΠ²Π°"А") Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ символами, Π° Π½Π΅ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ ΠΎ Π±Π°ΠΉΡ‚Π°Ρ…, ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° извлСчСния"ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта" Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.