Author Topic: Работа с регистром. Перобразованиае регистра.  (Read 1427 times)

0 Members and 1 Guest are viewing this topic.

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Как кто работает?
Есть строка. И ещё нужно привести к определенному регистру
Например.
TEST->Test
test->Test
TeSt->Test
TEsT->TEST
и т.д.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
SUB(Cap, $mode, $input_str) // Подпрограмму пишем в начале скрипта до основного кода
   IF($first = 0)
      $first = 1
      $a_let = "А:Б:В:Г:Д:Е:Ё:Ж:З:И:Й:К:Л:М:Н:О:П:Р:С:Т:У:Ф:Х:Ц:Ч:Ш:Щ:Ъ:Ы:Ь:Э:Ю:Я:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"
      $a_let_f = STRFILTER($a_let, ":", 0)
      STRSEPARATE($a_let,":",$arr_cap)
      STRSEPARATE("а:б:в:г:д:е:ё:ж:з:и:й:к:л:м:н:о:п:р:с:т:у:ф:х:ц:ч:ш:щ:ъ:ы:ь:э:ю:я:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z", ":", $arr_cap2)
      $arrsiz=ARRSIZE($arr_cap)
   END_IF
   $let = $input_str
   $let3 = ""
   FOR($i1=1,$i1<=STRLEN($let))
      $let2 = STRCUT($let,$i1,1)
      $str_pos = STRPOS($a_let_f,$let2)
      IF($str_pos > 0)
         $out = 0
         IF(($let2 = $arr_cap[$str_pos-1]) & (($mode = 3)|($mode = 2))) // Большие в маленькие
            $let2 = $arr_cap2[$str_pos-1]
            $out = 1
         END_IF
         IF(($let2 = $arr_cap2[$str_pos-1]) & (($mode = 3)|($mode = 1)|($mode = 0))&($out = 0)) // Маленькие в большие
            IF(($mode = 0)&($i1=1))
               $mode = 2
            END_IF
            $let2 = $arr_cap[$str_pos-1]
            $out = 1
         END_IF
      END_IF
      $let3 = STRCONCAT($let3, $let2)
      IF($mode = 0)
         $mode = 2
      END_IF
   END_CYC
   $let = $let3
END_SUB

// В скрипте в нужном месте вызываем подпрограмму Cap(режим,строка)
// Параметры 0 - Как в предложениях
//           1 - ВСЕ БУКВЫ БОЛЬШИЕ
//           2 - все буквы маленькие
//           3 - БОЛЬШИЕ в маленькие - маленькие в БОЛЬШИЕ
Cap(0, "Тут сТрОкА Текста ИЛИ пЕРЕМЕННАЯ")
LOGWRITE ($let) // Итоговая строка выводится в переменную $let

HALT