2012-03-18 10 views
0

Windowsのパスまたはファイル名を表す文字列から不正な文字を削除しようとしています。ここでCant .netの正規表現を使用して文字列からバックスラッシュを削除します。

は私がテストのために使用されるコードは次のとおりです。

 string pattern = "([\", \\, <,>, :, /, ?,|,*])"; 
     string[] names = { "o\"ne", "t\\wo", "thr<ee", "fo>ur", "fi:ve", "si/x", "sev?en", "ei|ght", "ni*ne" }; 
     foreach (String name in names) 
     { 
      Console.WriteLine(Regex.Replace(name, pattern, String.Empty)); 
     } 

私はこのような書き込みを「2」を除いて、全てのプリントは大丈夫取得:トンの\ WO。 括弧の外側にアスタリスクを入れてみましたが、同じ結果が得られました。

どうすればよいですか?

ありがとうございます。

+1

あなたは 'Path.GetInvalidPathChars()'をチェックアウトしたいかもしれません – GolfWolf

+0

正規表現のパターンとしてどのように使うのですか? – SnapDragon

+0

これは実際には正規表現には使用されません。不正な文字を手動で置き換えて使用することができます。 – GolfWolf

答えて

0

正規表現パターンでバックスラッシュを二重にエスケープする必要があります。その理由は、バックスラッシュ文字を使用して正規表現内の文字グループを示すためです(数字を表す\dなど)。バックスラッシュで一致させるには、表記\\を使用します。これは.NET文字列でエスケープする必要があります。

つまり、\\\\\\に変更してください。

+0

これは機能しましたが、現在は空白文字も置き換えられます。 – SnapDragon

関連する問題