ファイル名に数字が含まれている場合は削除されるように、特定のフォルダ内のすべてのファイルの名前を変更します。正規表現を使用してファイルの名前を変更する
は、ファイル名ならば、別の例を(私は-
を削除する部分をやった)ファイル名は someFileName.someExtension
であれば、それはRocketman Elton John
に名前を変更する必要があり、それは同じままですが、ファイルはこのようであれば、 03 - Rocketman Elton John
、言います15-Trey Songz - Unfortunate (Prod. by Noah 40 Shebib)
の名前をTrey Songz Unfortunate (Prod. by Noah Shebib)
に変更する必要があります(やはり-
を削除できます)。ユーザーは、それがリネームファイルに今、この
private void btnGo_Click(object sender, EventArgs e)
{
StartRenaming(txtFolder.Text);
}
と
private void StartRenaming(string FolderName)
{
string[] files = Directory.GetFiles(FolderName);
foreach (string file in files)
RenameFile(file);
}
のように始まるの名前を変更し、また、この
private void txtFolder_MouseDown(object sender, MouseEventArgs e)
{
FolderBrowserDialog fd = new FolderBrowserDialog();
fd.RootFolder = Environment.SpecialFolder.Desktop;
fd.ShowNewFolderButton = true;
if (fd.ShowDialog() == DialogResult.OK)
{
txtFolder.Text = fd.SelectedPath;
}
}
のようなフォルダを選択するように要求されて、私は、機能を必要としますファイル内の任意の数を削除する正規表現。 そのは私が何ができるかである
private void RenameFile(string FileName)
{
string fileName = Path.GetFileNameWithoutExtension(FileName);
/* here the function goes that will find numbers in filename using regular experssion and replace them */
}
として実装されて、私は
1 var matches = Regex.Matches(fileName, @"\d+");
2
3 if (matches.Count == 0)
4 return null;
5
6 // start the loop
7 foreach(var match in matches)
8 {
9 fileName = fileName.Replace(match, ""); /* or fileName.Replace(match.ToString(), ""), whatever be the case */
10 }
11 File.Move(FileName, Path.Combine(Path.GetDirectoryName(FileName), fileName));
12 return;
のようなものを使用することができますしかし、私はそれはそれを行うための正しい方法だと思いませんか?これを行うためのより良い選択肢はありますか?これを行うにはこれが最善の方法ですか?また、String.ReplaceにIN
のようなものがありますか? sqlで私は選択コマンドでIN
を使用することができます条件の束を指定しますが、String.Replaceでこのようなものがありますので、ループを実行する必要はありません私は行7から10まで走った?他にも良い選択肢がありますか?
ps:私は質問を投稿しましたRegular Expression for numbers?(明らかに私は十分ではありませんでした)、それから私は正規表現を得ました。もしあなたが他の正規表現がもっと良くなると思うなら、情報は私に教えてください...
Thankx!それはタイプミスでした。私は今それを修正しました! :D – Razort4x