我需要计算特定文本文件中的人声,辅音和所有其他字符。
我创建了一个计算人声和辅音的脚本,但我无法弄清楚如何计算其余的字符。
目标是计算所有角色,即使它们来自其他语言,如冰岛角色和逗号,句号和感叹号等标志。
这是我目前的代码:
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
}
我意识到我需要一些方法来计算字符总数,然后减去人声和辅音(和空格)以找到第三个数字,但我无法弄明白。
答案 0 :(得分:3)
您可以使用Measure-Object
使用-Characters
开关来获取文件中的总字符数。然后,以下内容将此属性的值返回给变量:
$TotalChars = (Get-Content C:\Users\Administrator\Desktop\POWERSHELL\testfil.txt | Measure-Object -Character).Characters
$sign = $TotalChars - $vocal -$consonant
如果您想对空白字符进行折扣,您还可以使用-ignorewhitespace
切换Measure-Object
。
答案 1 :(得分:2)
假设您不想计算空格字符,可以使用模式\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
答案 2 :(得分:0)
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}
注意:这项作业最初是用丹麦语制作的,因此是声乐类别中的“æøå”。如果其他人需要做类似的脚本,我很抱歉,如果我在脚本中留下了一些奇怪的单词或字母;)