Powershell 单词首字母

Powershell 单词首字母

如果我有一个包含任何文本的文件,我怎样才能仅打印文件中每个单词的首字母,然后以大写字母打印所有元音?

答案1

我想这对于 PowerShell 初学者来说可能会有点棘手。

$poem = Get-Content "C:\somewhere\poem.txt"
$x = (($poem.Split(' ') | % { $_[0] }) -join "").ToUpper()

输出:

PS C:\Users\xy> $x
ISHAFSSCLYIAWNDIAHYTAAASYORFASMOMLWFCLEIPKHSBR

解释:

  • $poem.split(" ")断开$poem每条皮带上的整根绳子并为每个单词创建一个对象。
  • | %别名获取每个对象并为每个对象ForEach执行脚本块。{}
  • $_[0]选择当前对象的第一个字母

现在将返回一个对象数组,而不是一个简单的字符串。

  • -join ""将这些对象放在一起形成一个字符串。里面的值""定义了每个对象之间写的内容,在我们的例子中什么都没有。

  • .ToUpper()是一种将字符串中的每个字母变为大写字母的方法。

答案2

我本想评论一下,但仍然不够。缺少元音部分。我首先想到了一个数组 -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

相关内容