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

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

Битуация ослоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ†Π° строки. Если Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· внСшнСго Ρ„Π°ΠΉΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ CSV ΠΈΠ»ΠΈ TXT, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ нСсовмСстимыС символы возрастаСт ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹Π΅ срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками, Π½ΠΎ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ осознанно.

ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° спСцсимволов Π² строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ контСкстС программирования ΠΏΠΎΠ΄ спСцсимволами ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹ ASCII. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для управлСния Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ тСкста Π½Π° ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π° Π½Π΅ для отобраТСния самих символов. Π’ 1Π‘ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ символы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈ табуляции.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих Π·Π½Π°ΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ числовой ΠΊΠΎΠ΄. Зная этот ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ символ Π² строкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НапримСр, символ табуляции ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ΄ 9, Π° пСрСнос строки Π² Windows прСдставляСт собой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄ΠΎΠ² 13 ΠΈ 10. ПониманиС этой структуры позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ очистки.

Иногда Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«Π±ΠΈΡ‚Ρ‹Π΅Β» символы ΠΈΠ»ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с внСшними сСрвисами. Π’Π°ΠΊΠΈΠ΅ символы часто ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ΄Ρ‹ Π²Ρ‹ΡˆΠ΅ 127 Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ASCII ΠΈΠ»ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ суррогатными ΠΏΠ°Ρ€Π°ΠΌΠΈ Π² Unicode. Π˜Ρ… поиск Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΉ структуры строки.

ИспользованиС встроСнных констант ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

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

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с пСрСносами строк сущСствуСт константа Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ. Она автоматичСски подставляСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ кроссплатформСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΊΠΎΠ³Π΄Π° сСрвСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Linux, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π° Windows.

ΠšΡ€ΠΎΠΌΠ΅ пСрСноса строки, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ константы. НапримСр, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.НПП ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Word. Если Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ тСкст ΠΈΠ· офисных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΠΌΠ΅Π½Π½ΠΎ этот символ Ρ‡Π°Ρ‰Π΅ всСго Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ поискС ΠΏΠΎ подстрокС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ ОБ. ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Linux ΠΈ Windows это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ поиск символа Π½Π΅ сработаСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’ΠΎΡ‚ основныС константы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстом:

  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки (Line Feed ΠΈΠ»ΠΈ CRLF).
  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Πš β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ (Carriage Return).
  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ВАБ β€” Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ табуляция.
  • πŸ”Ή Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.НПП β€” Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π».
πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ константы вмСсто магичСских чисСл (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 10 ΠΈΠ»ΠΈ 13) Π² ΠΊΠΎΠ΄Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Поиск ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ символа (Ѐункция КодБимвола)

Когда встроСнных констант нСдостаточно ΠΈΠ»ΠΈ трСбуСтся Π½Π°ΠΉΡ‚ΠΈ спСцифичСский Π·Π½Π°ΠΊ, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ функция КодБимвола(). Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π² ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ строкС. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для посимвольного Π°Π½Π°Π»ΠΈΠ·Π° тСкста.

Алгоритм поиска ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ строится Π½Π° Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСй строки. Π’Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈ сравниваСтС с искомым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если ΠΊΠΎΠ΄Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Π²Ρ‹ фиксируСтС ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈΠ»ΠΈ выполняСтС Π·Π°ΠΌΠ΅Π½Ρƒ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ любого символа, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Π»ΠΈ для Π½Π΅Π³ΠΎ константа Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиска всСх символов с ΠΊΠΎΠ΄ΠΎΠΌ мСньшС 32 (ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы ASCII). Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ скрытыС Π·Π½Π°ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² XML ΠΈΠ»ΠΈ JSON.

Ѐункция ΠΠ°ΠΉΡ‚ΠΈΠ£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹(ВСкст)

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

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

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

Код = КодБимвола(Бимвол);

Если Код < 32 Π’ΠΎΠ³Π΄Π°

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

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

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

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

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π°Π½Π°Π»ΠΈΠ·Π° всСй строки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ€Π΅Π΄() Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строку Π½Π° массив символов. Ошибка Π² индСксации ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ пропуску Π²Π°ΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

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

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пСрСносов строк ΠΈ табуляции

НаиболСС частая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… β€” это Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ пСрСносы строк. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ стандарты: Unix (LF), Windows (CRLF) ΠΈΠ»ΠΈ классичСский Mac (CR). Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… 1Π‘ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ лишниС пустыС строки ΠΈΠ»ΠΈ слипшийся тСкст.

Для Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ тСкста часто трСбуСтся привСсти всС Π²ΠΈΠ΄Ρ‹ пСрСносов ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ стандарту. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² 1Π‘ стандартом являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.Π’Πš + Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ. Однако ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² Π²Π΅Π±-сСрвисы ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ очистки Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ всСх Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² пСрСносов Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ символ. Π‘Π½Π°Ρ‡Π°Π»Π° замСняСм ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ CRLF, Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ CR ΠΈ LF. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π·Π°ΠΌΠ΅Π½Ρ‹ Π²Π°ΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ символы Π² процСссС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ΠΈΠΏ систСмы Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠšΠΎΠ΄Ρ‹ ASCII ОписаниС
Windows CR + LF 13 + 10 Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ для 1Π‘ Π½Π° Windows
Unix / Linux LF 10 Часто встрСчаСтся Π² Π»ΠΎΠ³Π°Ρ…
Mac OS (старыС) CR 13 Π Π΅Π΄ΠΊΠΎ, Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π² старых Ρ„Π°ΠΉΠ»Π°Ρ…
Π’Π΅Π± (HTML) LF 10 Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ для JSON ΠΈ API

ПослС привСдСния пСрСносов ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Часто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚ Enter нСсколько Ρ€Π°Π· подряд, создавая Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ большиС отступы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ лишнСС мСсто ΠΈ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ поиск.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для поиска

Для слоТных сцСнариСв поиска, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ символ, Π° Π³Ρ€ΡƒΠΏΠΏΡƒ Π·Π½Π°ΠΊΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, идСально подходят рСгулярныС выраТСния. Π’ 1Π‘ ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ шаблон поиска ΠΎΠ΄Π½ΠΎΠΉ строкой.

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

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ русского ΠΈΠ»ΠΈ английского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°, Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаблон. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для очистки Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΡ‚ мусора.

РСгулярка = Новый РСгулярноСВыраТСниС("[^Π°-яА-Π―a-zA-Z0-9 ]");

НайдСно = РСгулярка.НайтиБовпадСния(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°);

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: РСгулярныС выраТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ строк. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΏΠΎ большим Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ (тысячи строк) Π±Π΅Π· ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ спСцсимволов Π²Π½ΡƒΡ‚Ρ€ΠΈ самого шаблона рСгулярного выраТСния. Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈΠ»ΠΈ Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ, ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ восприняты ΠΊΠ°ΠΊ слуТСбныС символы синтаксиса рСгулярок.

Бписок частых шаблонов для 1Π‘

\n[0-9] β€” любая Ρ†ΠΈΡ„Ρ€Π°\n\s β€” любой ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ)\n\r\n β€” пСрСнос строки Windows\n[^0-9] β€” всС, ΠΊΡ€ΠΎΠΌΠ΅ Ρ†ΠΈΡ„Ρ€

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΈ Π·Π°ΠΌΠ΅Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… символов

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ символы Π½Π°ΠΉΠ΄Π΅Π½Ρ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ логичСским шагом являСтся ΠΈΡ… Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π’ 1Π‘ для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° функция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(). Она создаСт Π½ΠΎΠ²ΡƒΡŽ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС вхоТдСния подстроки Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ.

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

ΠŸΡ€ΠΎΡ†Π΅ΡΡ очистки Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ обСспСчиваСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ всСй систСмС. НапримСр, ΠΏΠ΅Ρ€Π΅Π΄ записью Π² рСгистр свСдСний ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π²ΠΎ внСшний Ρ„Π°ΠΉΠ».

  • πŸ›  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() для массовой Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.
  • πŸ›  Для удалСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡƒΡΡ‚ΡƒΡŽ строку Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΌΠ΅Π½Ρ‹.
  • πŸ›  ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ очистки ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² мусора.

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ функция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ рСгистру Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ замСняСтС Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ символы. Для ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов рСгистр Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ понятия Β«Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎΒ» ΠΈΠ»ΠΈ Β«Π½ΠΈΠΆΠ½Π΅Π³ΠΎΒ» рСгистра.

β˜‘οΈ Алгоритм ΠΏΠΎΠ»Π½ΠΎΠΉ очистки строки

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

Диагностика ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° строковых Π΄Π°Π½Π½Ρ‹Ρ…

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

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, которая Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ скрытыС Π±Π°ΠΉΡ‚Ρ‹. НапримСр, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ строки стоит ΠΊΠΎΠ΄ 160 вмСсто ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ 32 (ΠΏΡ€ΠΎΠ±Π΅Π»Π°), Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π».

Для быстрой ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ консоль ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ 1Π‘, установив Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ посмотрСв Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «ШСстнадцатСричный Π²ΠΈΠ΄Β» (Hex), Ссли такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступна Π² вашСй вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· внСшниС инструмСнты.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°. НС довСряйтС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ Π½Π° 100%, провСряйтС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°() для сравнСния ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ ΠΈ фактичСской Π΄Π»ΠΈΠ½Ρ‹ строки. Если Π΄Π»ΠΈΠ½Π° строки "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" большС 6 символов, Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅ΡΡ‚ΡŒ скрытыС символы.

πŸ’‘

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ строки Π² Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Ρ‘ чистоту. ВсСгда провСряйтС Π΄Π»ΠΈΠ½Ρƒ ΠΈ ΠΊΠΎΠ΄Ρ‹ символов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ странных ошибок сравнСния.

Как Π½Π°ΠΉΡ‚ΠΈ всС Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅?

НСразрывный ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ΄ 160 (0xA0). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкст, Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.НПП, " "), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ 32. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ КодБимвола() = 160.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ поиск подстроки, хотя тСкст ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ?

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

МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ символ с ΠΊΠΎΠ΄ΠΎΠΌ 0 (Null) Π² 1Π‘?

Π”Π°, символ с ΠΊΠΎΠ΄ΠΎΠΌ 0 допустим Π² строках 1Π‘. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· КодБимвола() == 0. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ внСшниС систСмы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ строку ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π½ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ Π±Π°ΠΉΡ‚Ρƒ, считая Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†ΠΎΠΌ строки.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ· строки?

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ [0-9] ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(). Π­Ρ‚ΠΎ быстрСС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΡ‚ 0 Π΄ΠΎ 9 Π² Ρ†ΠΈΠΊΠ»Π΅ Π·Π°ΠΌΠ΅Π½.

ВлияСт Π»ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ настройки Π½Π° поиск спСцсимволов?

НСт, ΠΊΠΎΠ΄Ρ‹ ASCII ΠΈ Unicode ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹. Однако Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования рСгистра (Π‘Ρ‚Ρ€Π—Π°Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ) ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ косвСнно влияСт Π½Π° поиск, Ссли Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Π±ΡƒΠΊΠ²Ρ‹.