特殊符号引发的bug,C#去除不可作为文件名的特殊符号

这篇具有很好参考价值的文章主要介绍了特殊符号引发的bug,C#去除不可作为文件名的特殊符号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

前段时间小编开发了一个控制台程序,把数据库中的数据取出来按照编码名称分别存储文件,存储文件之前检查是否存在当前文件,如果存在删除。开始小批量的数据还挺顺利的,当批量执行问题就来了,每次执行到一半时,创建的文件不增加反而变少了,经过日志捕捉才发现是字段里包含特殊符号惹的祸。小编是按照字段编码来当文件名称的,但是由于是比较老的数据,编码比较乱包含有特殊符号,造成创建文件失败,而且还删除了其它的文件。怎么会删除其它文件了,原来是搜索带有“?”的文件名称后会查出所有的文件然后删除。怎么解决呢?过滤掉名称中的“不可作为文件名的特殊符号”的字符,问题解决。小编分享一下代码:

代码

主要是通过正则表达式实现

using System;
using System.Text.RegularExpressions;
class Program
{
    static void Main()
    {
        string fileName = "my#关注公众号:DOTNET开发跳槽?name*.txt";
        string cleanedFileName = RemoveFileNameChars(fileName);
        Console.WriteLine(cleanedFileName);
    }
    static string RemoveFileNameChars(string fileName)
    {
        // 正则表达式模式匹配不可作为文件名的特殊符号
        string invalidChars = @"[\\/:*?""<>|]";
        // 使用正则表达式替换特殊符号为空字符串
        string cleanedFileName = Regex.Replace(fileName, invalidChars, "");
        return cleanedFileName;
    }
}

在上述代码中的 `RemoveFileNameChars` 方法使用正则表达式模式 `[\\/😗?""<>|]` 匹配不可作为文件名的特殊符号,并使用空字符串将它们替换掉。通过调用这个方法,你可以将文件名中的特殊符号去除掉。比如输入的文件名是 `公众号dotnet#开发?跳槽*.txt"`,输出的清理后的文件名是 `"公众号dotnet开发跳槽.txt"`。

结语

如果涉及到用代码生成文件名称,一定要注意是否有不可作为文件名的特殊符号,否则会造成未知原因的bug,比如像小编描述“?”的bug,把文件删除完了。希望本文对你有所收获,你有更好的方法吗?欢迎留言或者吐槽。文章来源地址https://www.toymoban.com/news/detail-559006.html

来源公众号:DotNet开发跳槽

到了这里,关于特殊符号引发的bug,C#去除不可作为文件名的特殊符号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web前端之node批量修改文件名、大小驼峰与符号之间的相互转换、把小驼峰文件名改为短横线、readdir、stat、rename

    以上代码只能在node环境下运行,在浏览器环境中运行报错。 node index.js

    2024年02月01日
    浏览(71)
  • bug:file name too long文件名超出系统最大限制

    今天开发需求的时候发现无法新建文件,提示file name too lang,于是翻阅和查询了一些资料,发现不同操作系统下文件名和目录名最长的长度不同。 操作系统 文件名最大长度(字节) 路径最大长度 Linux 255 4096 MAC 255 1024 Windows(未开启长文件名) 255 260 Windows(开启长文件名) 25

    2024年02月16日
    浏览(33)
  • Shell语法解释特殊符号 # %

    在 Bash 中, % 符号通常表示删除字符串的后缀。具体来说, ${var%pattern} 表示从变量 $var 的结尾删除匹配模式 pattern 的子串,并返回删除后的字符串。 例如,如果 $namebin 的值为 file.bin ,那么 ${namebin%.bin} 的结果就是 file ,因为它删除了 $namebin 变量结尾的 .bin 后缀。 需要注意

    2024年02月01日
    浏览(31)
  • Kotlin系列之?、?:、!!、:: 特殊符号

    声明一个变量可为空。         表示这个变量可以为null。该变量如果为null时,不会执行该变量后面的逻辑,也不会抛出空指针异常,俗称空安全。如果不为null,会正常执行该变量后面的内容。 非空断言运算符         加在变量后面,表示该变量如果为null时,会抛出

    2024年02月16日
    浏览(162)
  • Linux 终端特殊符号含义大全

    Linux 终端中有许多特殊符号,本文对常用的进行了总结: $ 表示变量/普通终端用户:用于引用变量的值/表示终端中的普通用户。 # 表示注释/超级用户:用于在脚本中注释代码/表示终端中的超级用户。 / :根目录/目录分隔符。 ~ :当前用户的主目录。 . :当前目录。 .. :上

    2024年02月11日
    浏览(41)
  • JS 去除字符串中所有标点符号

    直接上代码了

    2024年02月06日
    浏览(53)
  • Java split()方法中的特殊符号

    在Java中,split()方法用于分隔字符串,可以根据匹配给定的正则表达式来拆分字符串。split()方法可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回;语法如下,其中参数regex指定正则表达式分隔符,limit指定分割的份数。分隔符可以是任意字符、符号、数字、

    2024年02月10日
    浏览(43)
  • Vue之html中特殊符号的展示

    在html中使用特殊字符时直接展示会报错,需要使用实体名称或者实体编号才能展示。

    2024年02月10日
    浏览(45)
  • Python使用jieba库分词并去除标点符号

    相对于英文文本,中文文本挖掘面临的首要问题就是分词,因为中文的词之间没有空格。在Python中可以使用jieba库来进行中文分词。 但是在中文中,标点符号出现的频率也是很高的,在使用jieba库对带有标点符号的汉语句子进行分词时,标点符号出现在分词结果中时,对于后

    2024年02月04日
    浏览(72)
  • SqlServer中去除字段空格及特殊空格/回车/换行等

    解决方式如下: 1.去除左边空格   LTRIM() 2.去除右边空格   RTRIM() 3.去除回车符    REPLACE(@str, CHAR(13) , \\\'\\\')  4.去除换行符     REPLACE(@str, CHAR(10), \\\'\\\')  5.去除回车换行符    REPLACE(@str, CHAR(13) + CHAR(10), \\\'\\\') 6.替换空格   REPLACE(@str,\\\' \\\',\\\'\\\') 实例如下:

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包