2012-03-18 81 views
0

我試圖從窗口中代表路徑或文件名的字符串中刪除非法字符。無法使用正則表達式在字符串中刪除反斜槓.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)); 
     } 

我得到的所有打印好了,除了「兩」是這樣寫的:T \禾。 我試過在括號外加星號並得到了相同的結果。

我該怎麼辦?

謝謝。

+1

您可能想查看'Path.GetInvalidPathChars()' – GolfWolf 2012-03-18 10:50:46

+0

如何將它用作正則表達式的模式? – SnapDragon 2012-03-18 11:01:06

+0

這不是真的用於正則表達式;它可以通過手動替換非法字符來使用。 – GolfWolf 2012-03-18 11:08:45

回答

0

您需要在您的正則表達式模式中使用雙反斜槓;原因在於反斜槓字符用於指示正​​則表達式中的字符組(例如,\d表示數字)。要匹配反斜槓,請使用符號\\。然後必須在.NET字符串中轉義。

總之,將\\更改爲\\\\

+0

它工作,但現在它也取代了空格。 – SnapDragon 2012-03-18 14:19:15

相關問題