Regex.Replace
XML ドキュメントに追加される前に、ユーザーが入力した文字列内の無効な文字をクリーンアップするためにを使用する拡張メソッドがあります。
正規表現の目的は、ユーザーが Microsoft Word からテキストを貼り付けたときに入力に含まれるランダムな hi-ASCII 文字をいくつか取り除き、それらをスペースに置き換えることです。
public static string CleanInput(this string inputString) {
if (string.IsNullOrEmpty(inputString))
return string.Empty;
// Replace invalid characters with a space.
return Regex.Replace(inputString, @"[^\w\.@-]", " ");
}
運命のように、誰かが base64 でエンコードされたデータを含む文字列に対してこの拡張メソッドを使用しています。
私が信じているのは、正規表現はbase64データのほとんどを変更しないままにするということですが、その一部を変更している可能性があると思います.
つまり\w
、正規表現が一致[A-Za-z0-9_]
し、Base64 が事実上同じ範囲であることを知っている場合、この正規表現は文字列を変更する必要がありますか?
文字列を変更している場合、エンコードされた文字列を台無しにすることなく、hi-ASCII ガベージが通常のエンコードされていないテキストでクリーンアップされるように、なぜ、どのように変更しますか。