我尝试检查字符串是否匹配GetInvalidFileNameChars()
我想使用正则表达式
所以我将GetInvalidFileNameChars()
的字符放入字符串然后检查
if Regex.IsMatch(id, stringInvalidFileName)
我想是id = "4711./"
然后是Regex.IsMatch(id, stringInvalidFileName)
应该是真的,但它是假的
我的错误是什么,为什么这是假的?提前致谢
答案 0 :(得分:2)
为什么要使用正则表达式?
这样可以正常工作:
string s = "4711./";
if (Path.GetInvalidFileNameChars().Any( c => s.Contains(c))
正如Rawling指出的那样,当您处理大字符串时,使用Intersect
可能更有效:
string longString = "Something much, much longer than this";
if (longString.Intersect(Path.GetInvalidFileNameChars()).Any())
对于相对较短的字符串(例如文件路径),可能几乎没有任何好处。在我看来,我更喜欢第一个选项,因为它更清楚地传达了代码的意图。