-1

Если у меня есть файл, содержащий какой-либо текст, как я могу распечатать только первую букву каждого слова из файла, а затем напечатать все гласные заглавными буквами?

2 ответа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 на каждом поводке и создает объект для каждого слова.
  • | % alias ForEach берет каждый объект и выполняет блок сценария {} для каждого объекта.
  • $_[0] выбирает первую букву текущего объекта

Теперь это будет возвращать массив объектов вместо одной простой строки.

  • -join "" объединяет эти объекты в строку. значение внутри "" определяет, что написано между каждым объектом, в нашем случае ничего.

  • .ToUpper() - это метод для строк, который превращает каждую букву в заглавную.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .