首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell:使用word-list检查文件是否为英文

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

Stack Overflow用户
提问于 2017-05-20 18:46:38
回答 1查看 331关注 0票数 1

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

在进行了一些创造性的谷歌搜索之后,我一开始是这样做的:

代码语言:javascript
复制
[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"
}

这表明它至少起作用了:

代码语言:javascript
复制
 the  : 172
 this  : 14
 in  : 52
 you  : 95
 of  : 61
 are  : 18
music : 0

那我接下来要去哪?

我考虑使用[System.Int32]$Hits = 0$Hits++将它们全部添加到一起。只是想弄清楚怎么做。

而且,当我使用Notepad++检查同一个文件时,会得到不同的计数,奇怪的是。我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-20 18:58:25

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

代码语言:javascript
复制
$stringCounts = foreach ($Word in $Words) {
  $Count = [RegEx]::Matches($Content,[RegEx]::Escape($Word)).Count
  New-Object psobject -Property @{
    Word = $Word
    Count = $Count
  }
}

现在,您可以使用Measure-Object轻松地获得单个计数的总和。

代码语言:javascript
复制
$TotalCount = ($stringCounts |Measure-Object Count -Sum).Sum
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44089636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档