kb-personal/src/content/docs/knowledge-base/Общие/Работа с текстом/Из UpperCamelCase в обычную строку.md
2025-10-07 14:16:34 +05:00

68 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 Или Не ЭтоАббревиатура Тогда // это точно не аббревиатура
Слова[Индекс] = НРег(Слово);
КонецЕсли;
КонецЦикла;
Возврат СокрЛП(СтрСоединить(Слова, " "));
КонецФункции
```