50 lines
2.7 KiB
Markdown
50 lines
2.7 KiB
Markdown
---
|
||
title: Разрешенное имя переменной из любой строки
|
||
slug: общие-работа-с-текстом/разрешенное-имя-переменной-из-любой-строки
|
||
---
|
||
```bsl
|
||
// Функция - Разрешенное имя переменной из наименования
|
||
//
|
||
// Параметры:
|
||
// Наименование - <Строка> - Входная строка. Может содержать любые символы
|
||
//
|
||
// Возвращаемое значение:
|
||
// <Строка>, Неопределено - Имя, подходящее для использования в качестве переменных, ключей структур, заголовков ТЗ и пр.
|
||
// Генерируемое имя всегда начинается с "_". Если преобразование не удалось, то возвращает Неопределено
|
||
//
|
||
Функция РазрешенноеИмяПеременнойИзНаименования(Знач Наименование) Экспорт
|
||
|
||
Наименование = СокрЛП(Наименование);
|
||
|
||
Если Не ЗначениеЗаполнено(Наименование) Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
Наименование = СтрЗаменить(Наименование, Символы.ВК + Символы.ВТаб + Символы.НПП + Символы.ПС + Символы.ПФ + Символы.Таб, " ");
|
||
|
||
Наименование = СтрЗаменитьПоРегулярномуВыражению(Наименование, "[^а-яА-ЯёЁa-zA-Z0-9 ]", "", Истина, Ложь);
|
||
|
||
МассивПодстрок = СтрРазделить(Наименование, " ", Ложь);
|
||
|
||
Если МассивПодстрок.Количество() = 0 Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
//Делаем CamelCase
|
||
Для Каждого Подстрока Из МассивПодстрок Цикл
|
||
Подстрока = ВРег(Лев(Подстрока, 1)) + Сред(Подстрока, 1);
|
||
КонецЦикла;
|
||
|
||
МассивПодстрок[0] = "_" + МассивПодстрок[0];
|
||
|
||
Результат = СтрСоединить(МассивПодстрок, "");
|
||
|
||
//Максимальная длина имени в 1С - 80 символов
|
||
Если СтрДлина(Результат) > 80 Тогда
|
||
Результат = Лев(Результат, 80);
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
``` |