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