【发布时间】:2014-03-10 12:25:31
【问题描述】:
我通过以下方式检查文件名验证:
foreach (char c in System.IO.Path.GetInvalidFileNameChars())
{
validFileName = validFileName.Replace(c, '_');
}
有更快的方法吗?
【问题讨论】:
我通过以下方式检查文件名验证:
foreach (char c in System.IO.Path.GetInvalidFileNameChars())
{
validFileName = validFileName.Replace(c, '_');
}
有更快的方法吗?
【问题讨论】:
这可能会更快,但我几乎不认为原版会慢到可以关心...
var invalidChars = Path.GetInvalidFileNameChars();
var fileNameChars = validFileName.ToCharArray();
for (int i = 0; i < fileNameChars.Length; ++i)
if (invalidChars.Contains(fileNameChars[i]))
fileNameChars[i] = '_';
validFileName = new string(fileNameChars);
【讨论】:
++i而不是i++来增加索引?
++i 可能比i++ 更有效。当然,由于优化,C# 在这种用法中的任何一种方式都没有区别。但至少我知道我在递增之前是否需要该值是准确的(++i 很明显我不需要)
++i 还是i++ 都没有任何区别。完整定义见here。
这有什么问题吗?两行实现,对此的堆栈溢出搜索显示您的答案与另一个问题How to make a valid Windows filename from an arbitrary string?的已接受答案相匹配
【讨论】: