PowerShell:使用word-list检查文件是否为英文

时间:2017-05-20 18:46:38

标签: powershell

以下是该方案: 我有一系列不同语言的文件,我需要弄清楚哪些是英文。 我的想法是创建一个单词数组,然后逐个检查文件中是否出现这些单词。最后,我将每个单词的出现加在一起。如果总数足够高,我会假设该文件是英文。

经过一些有创意的谷歌搜索后,我开始说:

[System.Array]$Words = ' the ',' this ',' in ',' you ',' of ',' are ','music'

[System.String]$Content = Get-Content -Path <FileName>

ForEach ($Word in $Words) {
  $Count = [RegEx]::Matches($Content,[RegEx]::Escape($Word)).Count
  Write-Output -InputObject "$Word : $Count"
}

这告诉我它至少在工作:

 the  : 172
 this  : 14
 in  : 52
 you  : 95
 of  : 61
 are  : 18
music : 0

那我下一步去哪儿?

我考虑过使用[System.Int32]$Hits = 0$Hits++将它们全部加在一起。只想弄清楚如何。

另外,当我用Notepad ++检查同一个文件时,我得到了不同的计数,奇怪的是。我做错了吗?

1 个答案:

答案 0 :(得分:3)

输出对象并将其存储在变量中,而不是输出字符串!

$stringCounts = foreach ($Word in $Words) {
  $Count = [RegEx]::Matches($Content,[RegEx]::Escape($Word)).Count
  New-Object psobject -Property @{
    Word = $Word
    Count = $Count
  }
}

现在,您可以使用Measure-Object

轻松获得各个计数的总和
$TotalCount = ($stringCounts |Measure-Object Count -Sum).Sum