我希望捕获.csv文件中的无效字符。目前我只能抓住所有不是英文的无效字符,无论如何都要抓住除英文和英文之外的所有无效字符。的德国
以下代码可以过滤非英文字母的无效字符。
$path = "product.csv"
$a = Get-Content $path | Select-String -AllMatches -Pattern "[^\x00-\x79]" | Select-Object LineNumber,Line,@{Name='String';Expression={$_.Matches.Value}}
$b = $a.count
$a
Write-Host "Total: $b"
包含在人名中的所有德国字符都被计为有效字符。
答案 0 :(得分:1)
最简单的方法是将德语特定字符的十六进制文字添加到匹配组。您正在寻找的角色是:
ß \xdf
Ü \xdc
ü \xfc
Ä \xc4
ä \xe4
Ö \xd6
ö \xf6
所以你的新比赛组将是:
-Pattern "[^\x00-\x79\xdf\xdc\xfc\xc4\xe4\xd6\xf6]"
修改强>
作为通过代码点匹配字符的替代方法,您还可以使用匹配模式中的实际字符:
-Pattern "[^a-zA-ZäÄöÖüÜß]"
它更容易阅读,也不包括您在上面匹配的\x00
和\x21
之间的所有这些非人类可读的控制字符。