Смена регистра текста
17 Июль 2009
Понадобилось мне приводить название подразделений к стандартизованному виду. Который был заложен еще до меня. В базе по сотрудникам их подразделения написаны все в верхнем регистре. Что согласитесь в 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()
}
# 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:\>
Иркутский и Братский Торгово-Экономические Колледжи
[PS] <43> C:\>Replace-Register 'иркутский и братский торгово-экономические колледжи'
Иркутский и Братский Торгово-Экономические Колледжи
[PS] <44> C:\>

.gif)
