我試圖重命名我的程序列出的具有「非法字符」的SharePoint文件導入文件。我所指的非法字符是:〜#%& * {}/\ | :<>? - 「」使用正則表達式和遞歸更改FileNames
我想要做的是通過驅動器遞歸,收集文件名列表,然後通過正則表達式,從列表中挑選出文件名並嘗試替換實際文件名中的無效字符他們自己。
任何人有任何想法如何做到這一點?到目前爲止,我有這樣的:(請記住,我是一個完整的n00b這種東西)
class Program
{
static void Main(string[] args)
{
string[] files = Directory.GetFiles(@"C:\Documents and Settings\bob.smith\Desktop\~Test Folder for [SharePoint] %testing", "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
Console.Write(file + "\r\n");
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
string pattern = " *[\\~#%&*{}/:<>?|\"-]+ *";
string replacement = " ";
Regex regEx = new Regex(pattern);
string[] fileDrive = Directory.GetFiles(@"C:\Documents and Settings\bob.smith\Desktop\~Test Folder for [SharePoint] %testing", "*.*", SearchOption.AllDirectories);
StreamWriter sw = new StreamWriter(@"C:\Documents and Settings\bob.smith\Desktop\~Test Folder for [SharePoint] %testing\File_Renames.txt");
foreach(string fileNames in fileDrive)
{
string sanitized = regEx.Replace(fileNames, replacement);
sw.Write(sanitized + "\r\n");
}
sw.Close();
}
}
所以我需要弄清楚的是如何遞歸搜索這些無效字符,在實際文件名替換它們本身。任何人有任何想法?
我認爲他只是意味着把它們撕掉 – slf 2010-06-10 15:45:41
正則表達式做你想做的事情嗎? – slf 2010-06-10 15:49:12