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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ способы Π·Π°ΠΌΠ΅Π½Ρ‹, Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ β€” рСгулярныС выраТСния, ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΈΠ»ΠΈ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ протСстированы Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.23 ΠΈ 8.2.20, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ….

1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: функция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ()

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ способ β€” встроСнная функция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(). Она позволяСт Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС вхоТдСния подстроки (ΠΈΠ»ΠΈ символа) Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ строку. Бинтаксис максимально прост:

Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Π°Ρ€Π°ΡΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°, ΠΠΎΠ²Π°ΡΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ°)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΌΠ΅Π½Ρ‹ символа Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π·Π°ΠΏΡΡ‚ΡƒΡŽ (Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для прСобразования чисСл ΠΈΠ· ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² российский):

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ("123.45", ".", ",");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: "123,45"

Ѐункция Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ рСгистру! Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символ нСзависимо ΠΎΡ‚ рСгистра, придётся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ (см. Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎ рСгулярныС выраТСния). Π’Π°ΠΊΠΆΠ΅ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вхоТдСния.

  • βœ… ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования β€” идСально для ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… Π·Π°ΠΌΠ΅Π½
  • βœ… Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… строках
  • ❌ НСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
  • ❌ Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ рСгистру ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Π°
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΠΌΠ΅Π½Ρ‹ символов Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ()
РСгулярныС выраТСния
Цикл по символам
БобствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Π”Ρ€ΡƒΠ³ΠΎΠΉ

2. Π—Π°ΠΌΠ΅Π½Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ рСгистра: ΠΎΠ±Ρ…ΠΎΠ΄ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ()

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символ нСзависимо ΠΎΡ‚ Π΅Π³ΠΎ рСгистра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, всС Π±ΡƒΠΊΠ²Ρ‹ "Π°" ΠΈ "А" Π½Π° "ΠΎ"), стандартная функция Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ комбинация НРСг() ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ символам:

Ѐункция Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ‘Π΅Π·Π£Ρ‡Π΅Ρ‚Π°Π Π΅Π³ΠΈΡΡ‚Ρ€Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Π°Ρ€Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ», НовыйБимвол)

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

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

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ» = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Инд, 1);

Если НРСг(Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ») = НРСг(Π‘Ρ‚Π°Ρ€Ρ‹ΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ») Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + НовыйБимвол;

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ‘ΠΈΠΌΠ²ΠΎΠ»;

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

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

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

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

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

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Вася!";

НовоСБообщСниС = Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ‘Π΅Π·Π£Ρ‡Π΅Ρ‚Π°Π Π΅Π³ΠΈΡΡ‚Ρ€Π°(Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, "Π°", "ΠΎ");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, VosΠΎ!"

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с кирилличСскими символами Π² старых вСрсиях 1Π‘ (Π΄ΠΎ 8.3.10) функция НРСг() ΠΌΠΎΠ³Π»Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρƒ "Ρ‘". ΠŸΠ΅Ρ€Π΅Π΄ использованиСм протСстируйтС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° вашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

3. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Π°Ρ Π·Π°ΠΌΠ΅Π½Π°: рСгулярныС выраТСния

Для слоТных Π·Π°ΠΌΠ΅Π½ (ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π³Ρ€ΡƒΠΏΠΏΡ‹ символов, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ условия) Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ рСгулярныС выраТСния. Π’ 1Π‘ ΠΎΠ½ΠΈ доступны Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС:

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("[Π°-яА-Π―]", "g");

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π³Π’Ρ‹Ρ€.Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚123", "*");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: "*Ρ€ΠΈΠ²Π΅Ρ‚123"

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  • πŸ”€ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ всСх Ρ†ΠΈΡ„Ρ€: Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("\d", "g");
  • πŸ”€ Π—Π°ΠΌΠ΅Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π½Π° ΠΎΠ΄ΠΈΠ½: Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("\s+", "g");
  • πŸ”€ Π—Π°ΠΌΠ΅Π½Π° символов Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄Π°Ρ‚Ρ‹: Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("(\d{2})\.(\d{2})\.(\d{4})", "g");
Π—Π°Π΄Π°Ρ‡Π° РСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΌΠ΅Π½Ρ‹
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС Π·Π½Π°ΠΊΠΈ прСпинания [.,!?;:] "ΠŸΡ€ΠΈΠ²Π΅Ρ‚!" β†’ "ΠŸΡ€ΠΈΠ²Π΅Ρ‚"
Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ email Π½Π° *** [\w.-]+@[\w.-]+\.\w+ "test@mail.ru" β†’ "***"
ΠΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ [^0-9] "+7(999)123-45-67" β†’ "79991234567"
πŸ’‘

Для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСгулярными выраТСниями ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ шаблон ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° РСгулярноСВыраТСниС Π² Ρ†ΠΈΠΊΠ»Π΅ сильно Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

4. ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Π°Ρ Π·Π°ΠΌΠ΅Π½Π°: Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях трСбуСтся Π·Π°ΠΌΠ΅Π½Π° символов Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с нСстандартными ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ). Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ КодБимвола() ΠΈ Π‘ΠΈΠΌΠ²ΠΎΠ»():

Ѐункция Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠŸΠΎΠšΠΎΠ΄Ρƒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘Ρ‚Π°Ρ€Ρ‹ΠΉΠšΠΎΠ΄, ΠΠΎΠ²Ρ‹ΠΉΠšΠΎΠ΄)

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

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

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠšΠΎΠ΄ = КодБимвола(Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Инд, 1));

Если Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠšΠΎΠ΄ = Π‘Ρ‚Π°Ρ€Ρ‹ΠΉΠšΠΎΠ΄ Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π‘ΠΈΠΌΠ²ΠΎΠ»(ΠΠΎΠ²Ρ‹ΠΉΠšΠΎΠ΄);

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Инд, 1);

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

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

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

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

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

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ суррогатных ΠΏΠ°Ρ€?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°() ΠΈ сравнитС с Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π»ΠΈΠ½Π°UTF16(). Если значСния ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ β€” Π² строкС Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ символы.

5. Массовая Π·Π°ΠΌΠ΅Π½Π°: оптимизация для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΌΠ΅Π½Π° символов Π² тысячах строк Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Рассмотрим Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  1. ΠŸΡ€Π΅Π΄ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ β€” создавайтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ РСгулярноСВыраТСниС ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ.
  2. ИспользованиС строкового ΠΏΠΎΡ‚ΠΎΠΊΠ° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов:
ΠŸΠΎΡ‚ΠΎΠΊ = Новый ЧтСниСВСкста(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ’Π΅ΠΊΡΡ‚);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Π—Π°ΠΏΠΈΡΡŒΠ’Π΅ΠΊΡΡ‚Π°();

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ";", ","));

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

  • ⚑ УскорСниС Π² 10-100 Ρ€Π°Π· ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с поэлСмСнтной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ
  • πŸ“‰ Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ потрСблСния памяти ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ >100 ΠœΠ‘
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с 1Π‘:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ΠΉ ΠΈΠ»ΠΈ 1Π‘:ERP массовая Π·Π°ΠΌΠ΅Π½Π° символов Π² справочниках ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. ВыполняйтС Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Π±Π°Π·Ρ‹|ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…|ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹|Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Ρ‚ΡŒ врСмя выполнСния с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ|ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ Π² случаС ошибки-->

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

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ символов. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ самыС распространённыС:

Ошибка ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
Π—Π°ΠΌΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 100 символов ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строки Π² старых вСрсиях 1Π‘ (Π΄ΠΎ 8.2) ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ строку Π½Π° части
ΠšΡ€Π°ΡˆΠΈΡ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ эмодзи НСкоррСктная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° суррогатных ΠΏΠ°Ρ€ UTF-16 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π»ΠΈΠ½Π°UTF16() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ
МСдлСнная Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… строках Посимвольная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² Ρ†ΠΈΠΊΠ»Π΅ ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ рСгулярныС выраТСния ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ

Π‘Π»ΡƒΡ‡Π°ΠΉ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ: ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Excel Π² 1Π‘:Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ β€” всС Π΄Π°Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ "01.12.2023" ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ Π² "01122023". Оказалось, Ρ‡Ρ‚ΠΎ Π² исходном Ρ„Π°ΠΉΠ»Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ Π±Ρ‹Π» нСстандартный символ "Β·" (U+00B7), Π° Π½Π΅ Ρ‚ΠΎΡ‡ΠΊΠ°. РСшСниС:

// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° нСстандартного раздСлитСля

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°, Π‘ΠΈΠΌΠ²ΠΎΠ»(183), ".");

7. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹: ΠΊΠΎΠ³Π΄Π° стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ подходят

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сцСнариях Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ нСстандартныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • πŸ”„ ДвунаправлСнная Π·Π°ΠΌΠ΅Π½Π° (Aβ†’B ΠΈ Bβ†’A ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ): ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ символ-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€
  • πŸ”„ ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ "Π°" Π½Π° "ΠΎ" Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли послС Π½Π΅Ρ‘ ΠΈΠ΄Ρ‘Ρ‚ "Π±"): рСгулярныС выраТСния с lookahead
  • πŸ”„ Π—Π°ΠΌΠ΅Π½Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΉ): комбинация Π›Π΅Π²() ΠΈ Π‘Ρ€Π΅Π΄()

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ контСкстной Π·Π°ΠΌΠ΅Π½Ρ‹ (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ "1Π‘" Π½Π° "1C" Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это Π½Π°Ρ‡Π°Π»ΠΎ слова):

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("\b1Π‘\b", "g");

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π³Π’Ρ‹Ρ€.Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ("1Π‘ ΠΈ 1Π‘ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅", "1C");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: "1C ΠΈ 1Π‘ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅"

πŸ’‘

Для слоТных Π·Π°ΠΌΠ΅Π½ всСгда сначала тСстируйтС рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° сайтС regex101.com с Ρ„Π»Π°Π³ΠΎΠΌ "g" (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ поиск) β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок Π² 1Π‘.

FAQ: ЧастыС вопросы ΠΏΠΎ Π·Π°ΠΌΠ΅Π½Π΅ символов Π² 1Π‘

МоТно Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символ Π² строкС Π±Π΅Π· использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ?

ВСхничСски Π΄Π° β€” Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с использованиСм ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Π°ΠΉΡ‚Ρ‹() ΠΈ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ˜Π·Π‘Π°ΠΉΡ‚ΠΎΠ²(), Π½ΠΎ это ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

  • НС ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ
  • ΠœΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ символы
  • Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ рСгулярныС выраТСния.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() Π½Π΅ замСняСт пСрСнос строки (\n)?

Π’ 1Π‘ символ пСрСноса строки прСдставлСн ΠΊΠ°ΠΊ Π‘ΠΈΠΌΠ²ΠΎΠ»(10) (LF). Для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкст, Π‘ΠΈΠΌΠ²ΠΎΠ»(10), "; ")

Для Π·Π°ΠΌΠ΅Π½Ρ‹ всСх Ρ‚ΠΈΠΏΠΎΠ² пСрСносов (LF, CR, CRLF) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

Π Π΅Π³Π’Ρ‹Ρ€ = Новый РСгулярноСВыраТСниС("\r?\n", "g");
Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символ Π² строкС, хранящСйся Π² Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π΅ справочника?

ИзмСнСниС Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Π±Π°Π·Π΅ Π½Π΅ рСкомСндуСтся. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

  1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°
  3. Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ()
Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€1");

Если НС Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.ΠŸΡƒΡΡ‚Π°Ρ() Π’ΠΎΠ³Π΄Π°

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НаимСнованиС = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НаимСнованиС, " ", "_");

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

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

Π•ΡΡ‚ΡŒ Π»ΠΈ ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ строки ΠΏΡ€ΠΈ Π·Π°ΠΌΠ΅Π½Π΅?

Π’ соврСмСнных вСрсиях 1Π‘ (8.3.20+) максимальная Π΄Π»ΠΈΠ½Π° строки β€” 2 Π“Π‘ (ΠΎΠΊΠΎΠ»ΠΎ 1 ΠΌΠ»Ρ€Π΄ символов). Однако:

  • Ѐункция Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Π½Π° строках >100 ΠšΠ‘
  • РСгулярныС выраТСния ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ рСкурсии
  • ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π‘Π” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 4000 символов для VARCHAR)

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Как Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символ Π² строкС JSON ΠΏΠ΅Ρ€Π΅Π΄ парсингом?

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ JSON-строку ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… символов ΠΏΠ΅Ρ€Π΅Π΄ использованиСм ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ:

// УдаляСм BOM (byte order mark) ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ символы

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉJSON, Π‘ΠΈΠΌΠ²ΠΎΠ»(65279), "");

ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉJSON, Π‘ΠΈΠΌΠ²ΠΎΠ»(160), " "); // НСразрывный ΠΏΡ€ΠΎΠ±Π΅Π»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉJSON);

Для слоТных случаСв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, экранированиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€ΠΎΠ΄Π΅ 1Script.JSON.