Если у меня есть файл, содержащий какой-либо текст, как я могу распечатать только первую букву каждого слова из файла, а затем напечатать все гласные заглавными буквами?
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()
- это метод для строк, который превращает каждую букву в заглавную.