Функция 1С СтрДлина(Строка) возвращает количество букв в строке, включая «непечатные» символы (переносы строк и прочее).
Например, использование функции 1С СтрДлина:
- Выполняем СтрДлина(«Привет, мир!»)
- 1С возвращает 12 (привет – 6, мир – 3, запятая и восклицательный знак – 2, пробел – 1)
Анализ текста обычно проводят побуквенно. Для этого нужно организовать цикл перебора строки по каждой букве, в чем нам поможет функция 1С СтрДлина().
Добавим в наш анализатор строки программы, проверяющие использование только разрешенных символов, и удаляющие запрещенные.
[VIP_CONTENT]
//В эту процедуру мы будем далее вписывать код
Процедура АнализТекста(Текст)
Сообщить("Было: " + Текст);
РазрешенныеСимволы = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЭЮЯабвгдежзийклмнопрстуфхцчшщьэюя1234567890+-*/=";
НоваяСтрока = ""; //сюда будем копировать то, что не надо удалять
Сч = 1; //"Счетчик" (обычно сокращают до "Сч") текущего положения буквы, индекс (позиция) первой буквы в строке – 1, однако если использовать позицию 0, то функции работы со строками также вернут первый символ строки, как и при позиции 1
ДлинаСтроки = СтрДлина(Текст); //Узнаем длину строки
Пока Сч <= ДлинаСтроки Цикл //повторяем цикл столько раз, сколько букв в строке; так как индекс первой буквы – 1, то индекс последней равен длине строки
Буква = Сред(Текст, Сч, 1); //выделяем 1 букву на позиции счетчика
Поз = Найти(РазрешенныеСимволы, Буква); //ищем наличия символа в строке разрешенных (переменная, выше)
Если Поз = 0 Тогда //Если буква не найдена – это запрещенный символ
Сообщить("В строке использован неразрешенный символ: " + Буква);
Иначе
НоваяСтрока = НоваяСтрока + Буква;
КонецЕсли;
Сч = Сч + 1; //увеличиваем счетчик на один, переходим к следующей букве
КонецЦикла;
Сообщить("Стало: " + НоваяСтрока);
КонецПроцедуры
[/VIP_CONTENT]
Обратите внимание – мы узнали длину строки заранее, перед циклом. Это потому что условие в цикле провряется столько раз, сколько итераций (повторений) в цикле.
ДлинаСтроки = СтрДлина(Текст); //Узнаем длину строки
Пока Сч <= ДлинаСтроки Цикл //повторяем цикл
Но, если бы внутри цикла мы изменяли длину строки, тогда условие выглядело вот так:
Пока Сч <= СтрДлина(Текст) Цикл