Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Заменить Имя месяца на цифру

Ответить
Настройки темы
PowerShell - [решено] Заменить Имя месяца на цифру

Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


есть переменная с месяцами:

Код: Выделить весь код
[array]$Times = "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December"
на что нужно поменять переменную в цикле:

Код: Выделить весь код
$File = "myfile-1.July.2015"

foreach ($T in $Times) {
                    $File = $File.Replace($T,??)
            }
чтобы на выходе было myfile-1.7.2015

Отправлено: 16:44, 08-12-2015

 

Аватара для IVa_

Старожил


Сообщения: 349
Благодарности: 16

Профиль | Цитировать


about_Switch

-------
Одна и та же информация в разное время может быть полезной и бесполезной.


Отправлено: 17:06, 08-12-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$m = [datetime]::ParseExact($T,"MMMM",[Globalization.CultureInfo]::InvariantCulture).Month
$File = $File.Replace($T,$m)
Или создать hashtable^

Код: Выделить весь код
$Times = @{
"January" = 1
"February" = 2
}
foreach ($T in $Times.GetEnumerator()) {
	$File = $File.Replace($T.Name,$T.Value)
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:07, 08-12-2015 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
$Times = "January","February","March","April","May","June","July","August","September","October","November","December"
$File = "myfile-1.July.2015"

foreach ($T in $Times)
{
    $File = $File.Replace($T,($Times.indexof($T) + 1))
}
$File
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:39, 08-12-2015 | #4


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Foreigner, едва ли кто-то в здавом уме и трезвой памяти станет строчить массив названий месяцев вручную. Kazun в этом плане более лаконичен. Есть еще вариант, не столь лаконичный, но без создания массива названий месяцев вручную:
Код: Выделить весь код
$File = 'myfile-1.July.2015'
$j = ($i = (
  $$ = [Globalization.DateTimeFormatInfo]::InvariantInfo.MonthNames
).IndexOf(
  $$.Where({$File -match $_})[0]
)) + 1
$File.Replace($$[$i], $j)
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:26, 08-12-2015 | #5


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


greg zakharov,
Цитата c4uran:
есть переменная с месяцами: »

Отправлено: 20:35, 08-12-2015 | #6


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Foreigner, так незаметно форум с Вашей помощью превращается в цитатник.

Отправлено: 20:46, 08-12-2015 | #7


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


greg zakharov, Я заметил другую тенденцию, Ваше стремление со всеми поссориться

Отправлено: 21:06, 08-12-2015 | #8


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


Спасибо всем кто ответил, я думал о варианте Foreigner, все варианты интересные и разберу их, спасибо

Отправлено: 09:18, 09-12-2015 | #9


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


greg zakharov, ваш метод вывалил ошибку:

Сбой вызова метода из-за отсутствия в [System.String] метода с именем "Where".
+ $$ = [Globalization.DateTimeFormatInfo]::InvariantInfo.MonthNames

и

Сбой операции индексирования, индекс массива вычислен как NULL.
+ $File.Replace($$[$i], $j)

Kazun, а ваш метод(который первый) крутой, даже не могу понять как он работает, справочку?

Последний раз редактировалось c4uran, 09-12-2015 в 09:56.


Отправлено: 09:47, 09-12-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Заменить Имя месяца на цифру

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Помогите найти цифру в строке bat файла vitalijch Скриптовые языки администрирования Windows 1 24-03-2012 20:19
Java - Как заменить заменить символ \ на \\ , с помощью replaceall ? Большой Кол Программирование и базы данных 3 29-04-2011 05:37
Assm - Перевод арабской цифры в цифру почтового индекса balecki Программирование и базы данных 0 27-11-2010 23:22
Установка - Вин ХР проф. Можно ли заменить имя пользователя и название организации? BVN-2005 Microsoft Windows 2000/XP 1 13-10-2010 09:41
Как перегнать виниловые диски в цифру samurai Видео и аудио: обработка и кодирование 4 25-05-2009 10:46




 
Переход