Ich versuche also, die Wörter meiner Textdatei zu zählen, aber wenn ich Get-Content erhalte, liest das Array sie Buchstaben für Buchstaben und lässt mich nicht Wort für Wort vergleichen . Ich hoffe ihr könnt mir helfen!Powershell Textdatei Wort für Wort lesen
Clear-Host #Functions
function Get-Articles(){
foreach($Word in $poem){
if($Articles -contains $Word){
$Counter++
}
}
write-host "The number of Articles in your sentence: $counter"
}
#Variables
$Counter = 0
$poem = $line
$Articles = "a","an","the"
#Logic
$fileExists = Test-Path "text.txt"
if($fileExists) {
$poem = Get-Content "text.txt"
}
else
{
Write-Output "The file SamMcGee does not exist"
exit(0)
}
$poem.Split(" ")
Get-Articles
Scriptblock in 'Where' wird für jedes Wort ausgeführt, und da der Aufwand für Skriptblockaufrufe in PowerShell sehr groß ist, verbunden mit der Langsamkeit des Pipelining in PS, ist dies bei weitem die langsamste Lösung. Der schnellste wird in einem Kommentar erwähnt: '(Select-String '\ b (a | an | der) \ b' text.txt -AllMatches) .Matches.Count'. Der ursprüngliche Code in der Frage ist fast so schnell, vorausgesetzt, es wird mit 'split' in jeder Zeile oder in der gesamten Textinhalts-Zeichenfolge behoben. – wOxxOm