Если у меня есть файл, содержащий какой-либо текст, как я могу распечатать только первую букву каждого слова из файла, а затем напечатать все гласные заглавными буквами?
2 ответа
0
Я бы прокомментировал, но все же не смеялся респ. Гласная часть отсутствовала. Я сначала подумал о массиве -contains, но -cmatch проще. Это же стихотворение возвращается сюда:
$poem = Get-Content ".\cwItc.txt"
$x = (($poem.Split(' ') | % {
If ($_[0] -cmatch "[aeiou]") {$_[0].ToUpper} else {$_[0]}
} ) -join "" )
$x
> .\FirstLetterVow2up.ps1
IshfssclywndIhytsyrFsmmlwfcLIpkhsbrNwjhIftdBdwtpIsttcIcbttrpIkItsthtIwtIwpt
whrcsAtAMwnswltdSIwcnpwtWIdwtmfIttfbmwhhbIwlcthtppMmfwchfwlHtpmwtTlpgddmfIp
hswfldHctlvstlmHwwbhwhmpSttnsssIwcbvdlsprTgmldmptmbsIctsscbwrsfWttdhmwfdHwd
wvcIbftpshbAttthdlmSlnIscfsThmnlmtkWsctwpnImgrtcbnrImhtssgbmncBIktttdshwImh
tpthsmttsAhcmdttcImhtkhbtcwcIhftwptglIcctptwIsBIcftpcwtcWsdysmtsEswwkpEhttw
ntrIlsrmfStllftkDdwsbmtbTddnjtrFwdhtwwcrtbSh
0
Я думаю, это может быть немного сложнее для начинающих PowerShell.
$poem = Get-Content "C:\somewhere\poem.txt"
$x = (($poem.Split(' ') | % { $_[0] }) -join "").ToUpper()
выход:
PS C:\Users\xy> $x
ISHAFSSCLYIAWNDIAHYTAAASYORFASMOMLWFCLEIPKHSBR
объяснение:
$poem.split(" ")разрывает всю строку$poemна каждом поводке и создает объект для каждого слова.| %aliasForEachберет каждый объект и выполняет блок сценария{}для каждого объекта.$_[0]выбирает первую букву текущего объекта
Теперь это будет возвращать массив объектов вместо одной простой строки.
-join ""объединяет эти объекты в строку. значение внутри""определяет, что написано между каждым объектом, в нашем случае ничего..ToUpper()- это метод для строк, который превращает каждую букву в заглавную.
