我真的很困惑。我已经在C#中编写了一段代码,该代码通过了可能的文件路径。如果它包含在正则表达式字符串中指定的字符,它应该返回false。然而,正则表达式函数Match拒绝找到任何匹配的东西(我甚至把它设置为一个我知道在字符串中的单数字符),导致了我的严重刺激。 的代码是:我怎么搞砸了我的正则表达式?
static bool letterTest(string pathway)
{
bool validPath = false;
char[] c = Path.GetInvalidPathChars();
string test = new string(c);
string regex = "["+test+"]";
string spTest = "^[~#%&*\\{}+<>/\"|]";
Match match = Regex.Match(pathway, spTest);
if (!match.Success)
{
validPath = true;
}
return validPath;
}
我传递给它的字符串为:@"C:/testing/invalid#symbol"
我在做什么错误/误解与正则表达式,或者是比我搞砸了正则表达式以外的东西?
这对于正则表达式不是问题,只需使用'string。Contains()' – Jonesopolis
@Jonesopolis测试一个子字符串,但是'pathway.Any(c => Path.GetInvalidPathChars()。Contains(c))'会起作用。 – juharr
如果你打算使用正则表达式,你应该尝试使用'string regex =“[”+ Regex.Escape(test)+“]”;'。由于您获取的文件夹路径中不能使用的符号数组,并且它们包含特殊的正则表达式元字符,所以它是处理该问题最安全的方法。但是,在这里,您需要使用某些人提供的LINQ。 –