Имя: Пароль:
1C
 
как из произвольной строки вытащить .
,
0 lamme
 
31.05.21
14:34
.. вытащить последовательность из 20 чисел

т.е. идет загрузка из банк-клиента
идет комментарий типа
РАСЧЕТНЫЙ СЧЕТ ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ ВАСИЛИЙ Р/С 12342123122222212 В ФИЛИАЛ № 1234 БАНКА ВТБ (ПАО)

как можно вытащить р/с ?
1 Масянька
 
31.05.21
14:36
(0) Botom "Р/С" и далее (после пробела) 20 символов твои.
2 Масянька
 
31.05.21
14:36
(1) Ищещь
3 mistеr
 
31.05.21
14:36
Регулярные выражения еще не предлагали?
4 craxx
 
31.05.21
14:38
(0) Как-то так
МассивСтрок = СтрРазделить(НашаСтрока," ",ИСТИНА);
Для Каждого Строчка Из МассивСтрок Цикл
   /// тут проверим что все символы в строке цифры и стдДлина(Строчка)=20
КонецЦикла;
5 polosov
 
31.05.21
14:38
(0) Начни с регулярного выражения: "\d{20}"
6 lamme
 
31.05.21
14:42
регулярные - да. это я думал
https://infostart.ru/public/64222/

а как это регулярное выражение составить?

ну т.е. вот такое вот \[([\d\wЁА-Я]+)\]
7 lamme
 
31.05.21
14:42
регулярными - красивее будет однако
8 mikecool
 
31.05.21
14:46
(6) проверяй на чем то типа https://regexr.com/
9 Галахад
 
гуру
31.05.21
14:47
Стр = "РАСЧЕТНЫЙ СЧЕТ ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ ВАСИЛИЙ Р/С 12342123122222212000 В ФИЛИАЛ № 1234 БАНКА ВТБ (ПАО)";

М = СтрРазделить(Стр, "0123456789", Ложь);
Для Каждого Эл Из М Цикл
    Стр = СтрЗаменить(Стр, Эл, " ");
КонецЦикла;
М = СтрРазделить(Стр, " ", Ложь);
Для Каждого Эл Из М Цикл
    Если СтрДлина(Эл) = 20 Тогда
        Стр = Эл;
        Прервать;
    КонецЕсли;
КонецЦикла;

Сообщить(Стр);
10 Масянька
 
31.05.21
15:06
(7)
    Стр = "РАСЧЕТНЫЙ СЧЕТ ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ ВАСИЛИЙ Р/С 12342123122222212000 В ФИЛИАЛ № 1234 БАНКА ВТБ (ПАО)";
    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.IgnoreCase     = Истина;     // Игнорировать регистр
    RegExp.Global     = Истина;     // Поиск всех вхождений шаблона
    RegExp.MultiLine     = Истина;     // Многострочный режим
    RegExp.Pattern     = "[^0-9]";     // отбор только чисел
    СтрРС = RegExp.Replace(Стр, "");
11 aka MIK
 
31.05.21
15:09
12 BIP1
 
31.05.21
15:26
(10) Вернёт 123421231222222120001234🙂
Да и зачем такие сложности с COMОбъект'ом?

Сред(Стр, СтрНайти(Стр, "Р/С") + 4, 20)

работает быстрее. И всего 1 строка😀 (ВРег() строки и прочие пред- и пост- проверки не в счёт)
13 Chameleon1980
 
31.05.21
15:29
обленились люди думать
14 Chameleon1980
 
31.05.21
15:30
Стаж: 14 лет 7 месяцев 6 дней
15 Chameleon1980
 
31.05.21
15:30
да и ума то много тут не нужно
16 lamme
 
31.05.21
15:31
Спасибо
17 Garykom
 
гуру
31.05.21
15:44
А если Р/С записан с " " типа так: "1234 2123 1222 2221 2000" ?
18 BIP1
 
31.05.21
15:55
(17) обрабатываемую строку, так или иначе в минимальном виде надо будет готовить. Как минимум ВРег(). Сюда же можно и СтрЗаменить() добавить🤷‍♂️
Но в контексте первоначальной задачи "т.е. идет загрузка из банк-клиента" вероятность того, что расчетный счет в выгрузке из банка, будет в каком-то нетипичном виде - исчезающе мала.
19 acht
 
31.05.21
16:15
(18) > Но в контексте первоначальной задачи
расчетный счет задается отдельным полем в файле
20 BIP1
 
31.05.21
16:18
(19) вроде, так написано в "задаче"

"т.е. идет загрузка из банк-клиента
идет комментарий типа" - РАСЧЕТНЫЙ СЧЕТ ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ ВАСИЛИЙ Р/С 12342123122222212 В ФИЛИАЛ № 1234 БАНКА ВТБ (ПАО)
21 SleepyHead
 
гуру
31.05.21
18:03
(0) погугли "лексический анализатор" и "конечный автомат", а также "описание грамматики". Возможно, сейчас все это устарело, а когда-то в 93 году я писал лабораторные на тему создания простенького языка программирования, надо было анализировать синтаксис кода.

Тебе надо выделить последовательность символов, состоящую из 20 цифр.
22 mistеr
 
01.06.21
08:28
(21) Ты еще Книгу Дракона посоветуй... Для загрузки банка самое то. :-/
23 acht
 
01.06.21
09:20
(21) И блокчейн! Без него ничего не получится!
24 hhhh
 
01.06.21
12:07
(21) на хрена все эти извращения? 20 символов? По слову "Р/С" не судьба ему проверить?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.