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

时间:2015-10-14 10:49:28

标签: c#

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

我想使用正则表达式

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

if Regex.IsMatch(id, stringInvalidFileName)

我想是id = "4711./"然后是Regex.IsMatch(id, stringInvalidFileName)

应该是真的,但它是假的

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

1 个答案:

答案 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())

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