关于c#:检查字符串是否匹配GetInvalidFileNameChars()


Check if string is Match GetInvalidFileNameChars()

本问题已经有最佳答案,请猛点这里访问。

我尝试检查字符串是否匹配GetInvalidFileNameChars()

我想用正则表达式

所以我将GetInvalidFileNameChars()的字符放入字符串然后检查

1
if Regex.IsMatch(id, stringInvalidFileName)

我想如果id ="4711./"那么Regex.IsMatch(id, stringInvalidFileName)

应该是真的,但这是假的

我的错是什么,为什么这是假的? 提前致谢


为什么要使用正则表达式?

这样可以正常工作:

1
2
string s ="4711./";
if (Path.GetInvalidFileNameChars().Any( c => s.Contains(c))

正如Rawling在下面指出的那样,当你处理大字符串时,使用Intersect可能更有效:

1
2
string longString ="Something much, much longer than this";
if (longString.Intersect(Path.GetInvalidFileNameChars()).Any())

对于相对较短的字符串(例如文件路径),可能几乎没有任何好处。 在我看来,我更喜欢第一个选项,因为它更清楚地传达了代码的意图。