我已经写了这个小方法来实现subj中的目标。然而,有没有更有效(更简单)的方法呢?我希望这能帮助像我一样寻找这篇文章的人。
var fileName = new System.Text.StringBuilder();
fileName.Append("*Bad/\ :, Filename,? ");
// get rid of invalid chars
while (fileName.ToString().IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) > -1)
{
fileName = fileName.Remove(fileName.ToString().IndexOfAny(System.IO.Path.GetInvalidFileNameChars()), 1);
}
发布于 2010-02-10 00:55:41
请尝试以下操作
public string MakeValidFileName(string name) {
var builder = new StringBuilder();
var invalid = System.IO.Path.GetInvalidFileNameChars();
foreach ( var cur in name ) {
if ( !invalid.Contains(cur) ) {
builder.Append(cur);
}
}
return builder.ToString();
}
发布于 2012-10-09 20:50:02
我知道这已经有几年的历史了,但这里有另一个解决方案供参考。
public string GetSafeFilename(string filename)
{
return string.Join("_", filename.Split(Path.GetInvalidFileNameChars()));
}
发布于 2011-10-28 22:40:27
一种与.NET 4兼容的不同方法。请参阅我上面的注释,解释这一需求。
public static string ScrubFileName(string value)
{
var sb = new StringBuilder(value);
foreach (char item in Path.GetInvalidFileNameChars())
{
sb.Replace(item.ToString(), "");
}
return sb.ToString();
}
https://stackoverflow.com/questions/2230826
复制相似问题