Формирование синонима переменной из идентификатора

FastCode 1510 12 22 67

Вариант на основе стэйт-машины. Выгодное отличие здесь в том, что символ вырезается из строки и проверяется на регистр только один раз. Если бы не надо было первую букву делать заглавной - было бы еще красивее.

Автор: ildarovich

Функция Синонимайзер(Имя, Ответ = "", Стэйт = 7, б = "") Экспорт
   Для ё = 1 По СтрДлина(Имя) Цикл
      а = Сред(Имя, ё, 1);
      Стэйт = (НРег(а) <> а) * 4 + Цел(Стэйт / 2);
      Ответ = Ответ + ?(Стэйт = 2, НРег(б), ?(ё = 2, ВРег(б), б)) + ?(Стэйт = 4 ИЛИ Стэйт = 5, " ", "");
      б = а
   КонецЦикла;
   Возврат Ответ + б
КонецФункции
1
Орфографическая ошибка в стэйт: стэйт
Орфографическая ошибка в Синонимайзер: Синонимайзер
Орфографическая ошибка в Стэйт (найдено 6): Стэйт

Комментарии

Vigtim
#1, 09 мая 2024 14:52

Можете пояснить конструкцию, особенно часть, где вычисляется очередной стэйт? Насколько понимаю, стэйты здесь - это значимость символов в строке, первый, последний, прописной... Но конструкция по вычислению стэйта непонятна.


См. также

Значение перечисления по синониму

СинонимыДопПараметровМетодов (БСП)

ВсеРоли (БСП)

ЗначениеПеречисленияПоСинониму

ЗаполнитьЗначенияГлобальныхПеременных (БСП)

Переменные среды (windows)

Стандартное формирование выборок

Проверить что переменная соответствует заданному типу

ПриФормированииМанифестаКонфигурации (БСП)

Модератору