1С 8.3 Удалить нечитаемые символы из строки - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Удалить нечитаемые символы из строки

Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Функция предназначена для очистки текстовых строк от непечатаемых, служебных и специальных символов, которые могут мешать корректной обработке или отображению текста в системе 1С 8.3.

Возможности функции
Функция выполняет комплексную очистку текста, удаляя или заменяя на пробелы:
  • Управляющие символы (переносы строк, табуляции, неразрывные пробелы)
  • Специальные символы из Word (параграфы, маркеры списков)
  • HTML-сущности (неразрывные пробелы, амперсанды)
  • Битые и нестандартные символы
  • Управляющие символы ASCII (0-31)
  • Лишние пробелы (по краям и двойные внутри строки)

Параметры
ВхСтрока (тип: Строка) - исходная строка для обработки

Возвращаемое значение
Очищенная строка (тип: Строка)

Особенности реализации
  • Замена на пробелы: Большинство нежелательных символов заменяется на пробелы, чтобы не "склеивать" слова.
  • Полное удаление: Некоторые символы (битые, управляющие) удаляются полностью.
  • Обработка пробелов: Функция нормализует пробелы, удаляя лишние.
  • Комментированные строки: Возможность раскомментировать обработку HTML-тегов (<, >).
Пример использования:
Текст = "Пример•текста¶с нечитаемыми\x0Bсимволами";
ЧистыйТекст = УдалитьНечитаемыеСимволы(Текст);
// Результат: "Пример текста с нечитаемыми символами"
Рекомендации:
  • Для обработки HTML-контента рекомендуется раскомментировать строки с заменой < и >.
  • Если нужно сохранить переносы строк, следует раскомментировать соответствующую проверку в цикле.
  • Функция экспортируется (Экспорт), поэтому может быть использована в других модулях.

Функция особенно полезна при:
  • Импорте данных из внешних источников
  • Обработке текста, скопированного из Word или веб-страниц
  • Подготовке текста для печати или экспорта
  • Очистке пользовательского ввода
Удалить нечитаемые символы в 1С 8.3:
// Возвращает очищенную строку (тип: Строка)
// Текст = "Пример•текста¶с нечитаемыми\x0Bсимволами";
// ЧистыйТекст = УдалитьНечитаемыеСимволы(Текст);
// Результат: "Пример текста с нечитаемыми символами"
//
// Параметры:
//  ВхСтрока (тип: Строка) - исходная строка для обработки
//
// Возвращаемое значение:
//  Строка

Функция УдалитьНечитаемыеСимволы(ВхСтрока) Экспорт

   // Удаляем переносы строк
   ИсхСтрока = СтрЗаменить(ВхСтрока,  Символы.ПС,   " "); // Перевод строки
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.ВК,   " "); // Возврат каретки
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.НПП,  " "); // Неразрывный пробел \xA0
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.ПФ,   " "); // Перевод формы (страницы).
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.ВТаб, " "); // Символ табуляции (вертикальной)
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символы.Таб,  " "); // Символ табуляции (горизонтальной).
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(182),  " "); // Символ параграфа
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(176),  " "); // Символ градуса
   ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(160),  " "); // Неразрывный пробел симв.

   // Удаляем маркеры списков
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "•", "-"); // маркер 1
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "◦", "-"); // маркер 2

   // Удаляем спец.HTML и Word
   ИсхСтрока = СтрЗаменить(ИсхСтрока," ", " "); //  HTML-пробел
   ИсхСтрока = СтрЗаменить(ИсхСтрока,"&",  " ");  // Раскодировать (& → &).
   //ИсхСтрока = СтрЗаменить(ИсхСтрока, "&lt;", " "); // экранированное представление символа <
   //ИсхСтрока = СтрЗаменить(ИсхСтрока, "&gt;", " "); // экранированное представление символа >

   ИсхСтрока = СтрЗаменить(ИсхСтрока, "¶", " "); // абзац симв.
   ИсхСтрока = СтрЗаменить(ИсхСтрока, "�",  ""); // битый символ

   // Удаляем все управляющие символы (ASCII 0–31), \x01и \x0B
   Для i = 0 По 31 Цикл
       // Если i <> 9 И i <> 10 И i <> 13 Тогда // Не удаляем Tab (\t=9), LF (\n=10), CR (\r=13)
       ИсхСтрока = СтрЗаменить(ИсхСтрока, Символ(i), "");
       // КонецЕсли;
   КонецЦикла;

   // Удаляем лишние пробелы по краям
   ИсхСтрока = СокрЛП(ИсхСтрока);

   // Удаляем двойные пробелы внутри строки
   Пока Найти(ИсхСтрока, "  ") > 0 Цикл
       ИсхСтрока = СтрЗаменить(ИсхСтрока, "  ", " ");
   КонецЦикла;

   Возврат ИсхСтрока;  //Возвращает очищенную строку (тип: Строка)

КонецФункции
//
3
комментарии
Игорь
01 апр 2025
Спасибо
Жаргал
27 мар 2025
Красота
Павел
27 мар 2025
Все символы и в одном месте. Супер, Спасибо.
____________________
Copyright©, «Программист 1С в г.Минске», 27.03.2025
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому