2017-10-20 23 views
0

無効な文字を.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

ファイルパスで無効な文字をチェックする場合は、[GetInvalidFileNameChars()]をチェックしてください(https://stackoverflow.com/questions/23066783/how-to-strip-illegal-characters-before-trying-to -save-filenames) –

+0

申し訳ありませんが、このget-contentはファイル名ではなく.csvファイルの内容を読み上げることです。 –

+0

文字「[]」は許可しますが、「{}」は許可しないことは意図的ですか? –

答えて

1

最も簡単な方法は、ドイツの特定の文字の16進リテラルをマッチグループに追加することです。あなたが探している文字は、次のとおりです。

ß \xdf 
Ü \xdc 
ü \xfc 
Ä \xc4 
ä \xe4 
Ö \xd6 
ö \xf6 

だからあなたの新しい一致グループは次のようになります。

-Pattern "[^\x00-\x79\xdf\xdc\xfc\xc4\xe4\xd6\xf6]" 

編集:あなたは可能性が彼らのコードポイントによってマッチする文字に代わるものとして

マッチパターンの実際の文字も使用してください:

-Pattern "[^a-zA-ZäÄöÖüÜß]" 

これは読みやすく、前述の一致する\x00\x21の間に人間が読めないこれらの制御文字もすべて含まれていません。

+0

こんにちはManuel Batsching、私は7つ以上のドイツ語の文字[リンク](https://www.alt-codes.net/german_alt_codes/)がオンラインで検索します。あなたの提供されたマッチグループはすべて正しかったり、ドイツ語のキャラクターが追加される必要がありますか?そして、あなたは16進数値をどうやって得たのか分かりますか?表示するフルリストを持つリソースはありますか?私は後で、中国語、韓国語などの言語を後で確認するために、さらに進んでいく必要があります。ありがとう –

+0

16進数がエスケープする理由は? – Tomalak

+0

@ YongCaiドイツ語として私はあなたがあなたが見つけたこれらの7つの余分な文字がドイツのアルファベットで使用されていないことを保証することができます。 –

関連する問題