计算特定文本文件中的字符
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}
注意:此作业最初是用丹麦语编写的,因此在声乐类别中使用“æ ø å”。如果其他人需要做类似的脚本,如果我在脚本中留下了一些奇怪的单词或字母,我深表歉意;)
我需要计算特定文本文件中的声乐、辅音和所有其他字符。
我创建了一个计算声乐和辅音的脚本,但我不知道如何计算其余字符。
目标是计算所有字符,即使它们来自另一种语言,例如冰岛字符和逗号、句号和感叹号等符号。
这是我当前的代码:
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}
注意:此作业最初是用丹麦语编写的,因此在声乐类别中使用“æ ø å”。如果其他人需要做类似的脚本,如果我在脚本中留下了一些奇怪的单词或字母,我深表歉意;)