--- title: Из UpperCamelCase в обычную строку slug: общие-работа-с-текстом/из-uppercamelcase-в-обычную-строку --- ```bsl // Функция - Преобразует CamelCase в обычный текст. // // Параметры: // СтрокаCamelCase - Строка - строка в стиле CamelCase. Например ВДополнительномПодменю, ВводПоСтроке и т.д. // // Возвращаемое значение: // Строка - преобразованный CamelCase в обычный текст. Например "HTTPСервис" => "HTTP сервис" // Функция НатуральноеПредставлениеСтрокиCamelCase(Знач СтрокаCamelCase) Экспорт СтрокаCamelCase = СтрЗаменить(СтрокаCamelCase, "_", ""); Результат = ""; ПредыдущийСимвол = ""; КоличествоЗаглавныхСимволов = 0; // Делим СтрокиТипаТакой на отдельные слова Для Сч = 1 По СтрДлина(СтрокаCamelCase) Цикл Символ = Сред(СтрокаCamelCase, Сч, 1); ЭтоЗаглавная = (Символ = ВРег(Символ)); // Переход от аббревиатуры к обычному слову Если НЕ ЭтоЗаглавная И КоличествоЗаглавныхСимволов >= 2 Тогда Результат = Лев(Результат, СтрДлина(Результат) - 1) + " " + Прав(Результат, 1); // Начало нового слова ИначеЕсли ЭтоЗаглавная И КоличествоЗаглавныхСимволов = 0 И ПредыдущийСимвол <> "" Тогда Результат = Результат + " "; КонецЕсли; Результат = Результат + Символ; Если ЭтоЗаглавная Тогда КоличествоЗаглавныхСимволов = КоличествоЗаглавныхСимволов + 1; Иначе КоличествоЗаглавныхСимволов = 0; КонецЕсли; ПредыдущийСимвол = Символ; КонецЦикла; // Приведение к строчному регистра (кроме первого слова и аббревиатур) Слова = СтрРазделить(Результат, " "); Для Индекс = 1 По Слова.ВГраница() Цикл Слово = Слова[Индекс]; ЭтоАббревиатура = (Слово = ВРег(Слово)); Если СтрДлина(Слово) = 1 Или Не ЭтоАббревиатура Тогда // это точно не аббревиатура Слова[Индекс] = НРег(Слово); КонецЕсли; КонецЦикла; Возврат СокрЛП(СтрСоединить(Слова, " ")); КонецФункции ```