**背景** 前段時間小編開發了一個控制台程式,把資料庫中的數據取出來按照編碼名稱分別存儲文件,存儲文件之前檢查是否存在當前文件,如果存在刪除。開始小批量的數據還挺順利的,當批量執行問題就來了,每次執行到一半時,創建的文件不增加反而變少了,經過日誌捕捉才發現是欄位里包含特殊符號惹的禍。小編是按照欄位 ...
背景
前段時間小編開發了一個控制台程式,把資料庫中的數據取出來按照編碼名稱分別存儲文件,存儲文件之前檢查是否存在當前文件,如果存在刪除。開始小批量的數據還挺順利的,當批量執行問題就來了,每次執行到一半時,創建的文件不增加反而變少了,經過日誌捕捉才發現是欄位里包含特殊符號惹的禍。小編是按照欄位編碼來當文件名稱的,但是由於是比較老的數據,編碼比較亂包含有特殊符號,造成創建文件失敗,而且還刪除了其它的文件。怎麼會刪除其它文件了,原來是搜索帶有“?”的文件名稱後會查出所有的文件然後刪除。怎麼解決呢?過濾掉名稱中的“不可作為文件名的特殊符號”的字元,問題解決。小編分享一下代碼:
代碼
主要是通過正則表達式實現
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` 方法使用正則表達式模式 `[\\/