Заменить Имя месяца на цифру
есть переменная с месяцами:
Код:
[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
|
Код:
$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)
}
|
Код:
$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
|
greg zakharov |
08-12-2015 20:26 2582805 |
Foreigner, едва ли кто-то в здавом уме и трезвой памяти станет строчить массив названий месяцев вручную. Kazun в этом плане более лаконичен. Есть еще вариант, не столь лаконичный, но без создания массива названий месяцев вручную:
Код:
$File = 'myfile-1.July.2015'
$j = ($i = (
$$ = [Globalization.DateTimeFormatInfo]::InvariantInfo.MonthNames
).IndexOf(
$$.Where({$File -match $_})[0]
)) + 1
$File.Replace($$[$i], $j)
|
greg zakharov,
Цитата:
Цитата c4uran
есть переменная с месяцами: »
|
|
greg zakharov |
08-12-2015 20:46 2582821 |
Foreigner, так незаметно форум с Вашей помощью превращается в цитатник.
|
greg zakharov, Я заметил другую тенденцию, Ваше стремление со всеми поссориться
|
Спасибо всем кто ответил, я думал о варианте Foreigner, все варианты интересные и разберу их, спасибо
|
greg zakharov, ваш метод вывалил ошибку:
Сбой вызова метода из-за отсутствия в [System.String] метода с именем "Where".
+ $$ = [Globalization.DateTimeFormatInfo]::InvariantInfo.MonthNames
и
Сбой операции индексирования, индекс массива вычислен как NULL.
+ $File.Replace($$[$i], $j)
Kazun, а ваш метод(который первый) крутой, даже не могу понять как он работает, справочку?:)
|
greg zakharov |
09-12-2015 11:16 2582982 |
Цитата:
Цитата c4uran
Сбой вызова метода из-за отсутствия в [System.String] метода с именем "Where".
|
Версию PowerShell озвучьте, ибо писано было на четверке.
|
greg zakharov, Да у меня видимо только 3.
Код:
$PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
3 0 -1 -1
Iska, Так это вызов .NET, только я вот не могу понять как можно сообразить когда средства PS заканчиваются и нужно копать так глубоко, вот не зная .NET же невозможно догадаться до подобного вызова
|
Цитата:
Цитата c4uran
не зная .NET же невозможно догадаться до подобного вызова »
|
Совершенно верно. PoSH — это .Net. И, Вы правы — тут только именно знать.
|
Время: 22:47.
© OSzone.net 2001-