我正在尝试从表示路径或文件名的字符串中删除非法字符。
以下是我用于测试的代码:
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 \ wo。 我试过在括号外面加一个星号并得到相同的结果。
我该怎么办?
谢谢。
答案 0 :(得分:0)
你需要双重逃避正则表达式中的反斜杠;原因是反斜杠字符用于表示正则表达式中的字符组(例如,\d
表示数字)。要匹配反斜杠,请使用符号\\
。然后必须在.NET字符串中进行转义。
简而言之,将\\
更改为\\\\
。