Главная > Программирование, Работа > Смена регистра текста

Смена регистра текста

Понадобилось мне приводить название подразделений к стандартизованному виду. Который был заложен еще до меня. В базе по сотрудникам их подразделения написаны все в верхнем регистре. Что согласитесь в Active Directory это бы смотрелось не очень хорошо. По этому у меня появилась необходимость автоматизировать этот процесс. В ходе чего на свет появилась такая функция:

#########################################################################################
#   Created:        Zakharchenko Andrey Ruslanovich
#   Date:           2009.07.17
#   Description:    Функция смена регистра подразделений/текста.
#                   Приведение его к общему стандарту.
#########################################################################################

Function Replace-Register ($text) {
#--- в цикле разрезаем текст на слова
    Foreach ($var in  ($text).Split(' ')) {
#--- проверяем если слово состоит из одного символа, делаем нижний регистр
        if ($var.Length -eq 1) {
            $j = $var.ToLower()
        }
#--- если слово разделено "-" то отдельно с ним работаем
        elseif ($var -cmatch '-') {
#--- переключатель
            $switch = 0
#--- разделяем слово по "-"
            Foreach ( $var1 in $var.Split('-')) {
#--- если это первое слово, то в конец добавляем "-"
                if ($switch -eq 0 ) {
                    $j1 = $(($var1.Substring(0,1)).ToUpper()) + $(($var1.Substring(1)).ToLower()) + '-'
                }
                else {
                    $j1 = $(($var1.Substring(0,1)).ToUpper()) + $(($var1.Substring(1)).ToLower())
                }
#--- собираем в строку
                $j = $j + $j1
                $switch++
            }
        }
#--- работа над обычными словами не подошедшими не под один фильтр
        else {
            $j = $(($var.Substring(0,1)).ToUpper()) + $(($var.Substring(1)).ToLower())
        }
#--- собираем текст в строку
        $textuot = $textuot + ' ' + $j
        Remove-Variable j
    }
#--- выводим результат
    $textuot.Trim()
}

Ну и проверим чего у нас получилось:

[PS] <42> C:\>Replace-Register 'ИРКУТСКИЙ И БРАТСКИЙ ТОРГОВО-ЭКОНОМИЧЕСКИЕ КОЛЛЕДЖИ'
Иркутский и Братский Торгово-Экономические Колледжи
[PS] <43> C:\>Replace-Register 'иркутский и братский торгово-экономические колледжи'
Иркутский и Братский Торгово-Экономические Колледжи
[PS] <44> C:\>
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.