我正在修复错误,在那里我找到了这个表达式: -
directoryPath = Regex.Replace(directoryPath, "[^\\w\\.@-]", "");
但由于表达式的结果,目录路径中的所有高ascii字符都搞砸了,我不擅长正则表达式并且不知道它但是现在我必须解决这个问题。
有人可以解释一下这个正则表达式的作用吗?
答案 0 :(得分:3)
它取代了任何 NOT
word character
或.
(点)或@
或 -
(破折号)
没有 。
INPUT
var directoryPath = @"C.@-(:\abc123/\def.foo";
输出
C.@-abc123def.foo
修改后的代码替换为space
和相应的输出
var directoryPath = @" @.-abcd efghi(^-^)/\:jklmNO@.-PQRSTUVW XYZ0123456789@.-";
Console.WriteLine(directoryPath);
//note change here
//second argument to Replace function is chanted from "" to " "
directoryPath = Regex.Replace(directoryPath, "[^\\w\\.@-]", " ");
Console.WriteLine(directoryPath);
输出:
@.-abcd efghi(^-^)/\:jklmNO@.-PQRSTUVW XYZ0123456789@.-
@.-abcd efghi - jklmNO@.-PQRSTUVW XYZ0123456789@.-
答案 1 :(得分:1)
您似乎遇到了编码问题。例如,Regex
在将字符串真正存储为UTF-8时可能会将您的字符串视为ASCII。
答案 2 :(得分:0)
它似乎是从directoryPath
删除第一个不是单词字符(数字,字母,下划线),句点,@符号或连字符的字符。
我刚刚使用C:\Scratch\Filename.txt
进行了尝试,它留给我CScratchFilename.txt
。