计算特定文本文件中的字符

Counting characters in a specific text file

我需要计算特定文本文件中的声乐、辅音和所有其他字符。

我创建了一个计算声乐和辅音的脚本,但我不知道如何计算其余字符。

目标是计算所有字符,即使它们来自另一种语言,例如冰岛字符和逗号、句号和感叹号等符号。

这是我当前的代码:

Clear-Host
$vocal = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "a|e|i|o|u|æ|ø|å" -AllMatches).Matches.Count
$vocal = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|z" -AllMatches).Matches.Count
$sign = $sign - $vocal - $consonant
if ($consonant -ge $vocal -ge $sign) {
  "`nThere are $vocal vocals, $consonant consonants and $sign other signs in the chosen document.`n"
} else {
    break
}

我意识到我需要一些方法来计算字符总数,然后减去主音和辅音(和空格)以找到第三个数字,但我想不通。

您可以使用 Measure-Object 通过 -Characters 开关获取文件中的总字符数(注意:在 PowerShell 7 中,此开关名为 -Character)。

下面然后returns这个属性的值给一个变量:

$TotalChars = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Measure-Object -Character).Characters

$sign = $TotalChars - $vocal -$consonant

如果您想减少空白字符,您还可以将 -ignorewhitespace 开关与 Measure-Object 一起使用。

假设您不想计算空白字符数,您可以使用模式 \S 来匹配单个非空白字符以计算总字符数。您可能还想使用字符 类 而不是交替,并避免多次读取输入文件。

$txt = Get-Content 'C:\path\to\input.txt'
$all       = ($txt | Select-String -Pattern '\S' -AllMatches).Matches.Count
$vocal     = ($txt | Select-String -Pattern '[aeiouæøå]' -AllMatches).Matches.Count
$consonant = ($txt | Select-String -Pattern '[bcdfghjklmnpqrstvwxz]' -AllMatches).Matches.Count

Mark Wragg 的回答非常有效。

我真正需要的只是“.characters”短语。

这是完成的代码:

clear-host
$vocal=(Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "a|e|i|o|u|æ|ø|å" -AllMatches).matches.count
$consonant=(Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Select-String -Pattern "b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|z" -AllMatches).matches.count
$TotalChars=(Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Measure-Object -ignorewhitespace -Character).Characters 
$sign = $TotalChars - $vocal -$consonant
if($consonant -ge $vocal -ge $sign){"`nThere are $vocal vocals, $consonant consonants and $sign other characters in the chosen document.`n"}
else{break}

注意:此作业最初是用丹麦语编写的,因此在声乐类别中使用“æ ø å”。如果其他人需要做类似的脚本,如果我在脚本中留下了一些奇怪的单词或字母,我深表歉意;)