当前位置: 首页 > 编程语言 > C#

C#从文件名共享中删除无效字符

时间:2023-04-11 10:58:22 C#

C#从文件名中删除无效字符我通过EF3.5从SQLServer数据库的nvarchar字段中获取数据。该字符串用于创建文件名,需要删除无效字符并尝试了以下选项,但均无效。请解释为什么这是一个可以理解的谜?我做错什么了吗?我浏览了该站点上几乎所有相关问题..现在发布了一个综合问题,其中包含其他类似问题的所有建议/答案。UPD:与问题无关......所有这些选项都有效。所以将它发布到社区wiki。publicstaticstringCleanFileName1(stringfilename){stringfile=filename;file=string.Concat(file.Split(System.IO.Path.GetInvalidFileNameChars(),StringSplitOptions.RemoveEmptyEntries));如果(file.Length>250){file=file.Substring(0,250);}返回文件;}publicstaticstringCleanFileName2(stringfilename){varbuilder=newStringBuilder();varinvalid=System.IO.Path.GetInvalidFileNameChars();foreach(varcurinfilename){if(!invalid.Contains(cur)){builder.Append(cur);}}返回builder.ToString();}publicstaticstringCleanFileName3(stringfilename){stringregexSearch=string.Format("{0}{1}",newstring(System.IO.Path.GetInvalidFileNameChars()),newstring(System.IO.Path.GetInvalidPathChars()));Regexr=newRegex(string.Format("[{0}]",Regex.Escape(regexSearch)));stringfile=r.Replace(文件名,"");返回文件;}publicstaticstringCleanFileName4(stringfilename){returnnewString(filename.Except(System.IO.Path.GetInvalidFileNameChars()).ToArray());}publicstaticstringCleanFileName5(stringfilename){stringfile=filename;foreach(charcinSystem.IO.Path.GetInvalidFileNameChars()){file=file.Replace(c,'_');}返回文件;}System.IO.Path.GetInvalidFileNameChars()返回的无效字符没有被删除——Bhuvan你在5分钟前发布的第一个方法适用于Path.GetInvalidFileNameChars()char,这里它正在工作:staticvoidMain(string[]args){字符串输入="abcghi\1234/5678|?9:*0";字符串输出=CleanFileName1(输入);控制台.WriteLine(输出);//这会打印:abcdefghi1234567890Console.Read();我认为虽然你的问题是一些特定于语言的特殊字符。您可以尝试通过打印字符串中字符的ASCII代码来解决此问题:stringstringFromDatabase="/5678|?9:*0";//在这里你从数据库中获取它foreach(charcinstringFromDatabase.ToCharArray())Console.WriteLine((int)c);并查阅ASCII表:http://www.asciitable.com/我再次怀疑您会看到代码大于128的字符,您应该从字符串中排除这些字符。这是我在静态公共类中使用的函数:Regexr=newRegex(string.Format("[{0}]",Regex.Escape(regexSearch)));返回r.Replace(文件名,replaceChar);}trythisfilename=Regex.Replace(filename,"[/?:*"">以上是C#学习教程:C#删除Filename中的无效字符,如果对大家有用需要进一步了解C#学习教程,希望大家多多关注---本文来自网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: