首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从FileName (或目录、文件夹、文件)中删除无效(不允许的、错误的)字符

从FileName (或目录、文件夹、文件)中删除无效(不允许的、错误的)字符
EN

Stack Overflow用户
提问于 2010-02-10 00:52:31
回答 4查看 24.7K关注 0票数 20

我已经写了这个小方法来实现subj中的目标。然而,有没有更有效(更简单)的方法呢?我希望这能帮助像我一样寻找这篇文章的人。

代码语言:javascript
复制
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);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-10 00:55:41

请尝试以下操作

代码语言:javascript
复制
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();
}
票数 15
EN

Stack Overflow用户

发布于 2012-10-09 20:50:02

我知道这已经有几年的历史了,但这里有另一个解决方案供参考。

代码语言:javascript
复制
public string GetSafeFilename(string filename)
{

    return string.Join("_", filename.Split(Path.GetInvalidFileNameChars()));

}
票数 107
EN

Stack Overflow用户

发布于 2011-10-28 22:40:27

一种与.NET 4兼容的不同方法。请参阅我上面的注释,解释这一需求。

代码语言:javascript
复制
public static string ScrubFileName(string value)
{
   var sb = new StringBuilder(value);
   foreach (char item in Path.GetInvalidFileNameChars())
   {
      sb.Replace(item.ToString(), "");
   }
   return sb.ToString();
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2230826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档