3 回答
TA贡献1811条经验 获得超4个赞
在这种情况下,您似乎在更改字符串而不是在任何地方重命名文件夹。您需要遍历并重命名已识别的文件夹,如下所示:
foreach(var myDirectory in myDirectories)
{
new DirectoryInfo(myDirectory).MoveTo(Regex.Replace(myDirectory, findFolderNamePattern, replacement));
}
这应该重命名每个文件夹,因为它标识了它。
TA贡献1799条经验 获得超9个赞
我认为有两点需要考虑:
迭代变量不能改变。
Regex.Replace 方法接受三个参数并返回:
与输入字符串相同的新字符串,只是替换字符串代替了每个匹配的字符串。如果当前实例中的模式不匹配,则该方法返回当前实例不变。
您可以在此处查看。
基于这些,以下代码查找匹配的文件夹名称并重命名它们。
string findFolderNamePattern = @"((?i)domain|.com(?-i))";
string replacement = "";
foreach (var myDirectory in myDirectories)
{
string newDirName = Regex.Replace(myDirectory, findFolderNamePattern, replacement);
Directory.Move(myDirectory, newDirName);
}
TA贡献2039条经验 获得超7个赞
由于您无法更改循环迭代器,您可以使用另一个数组,如下面的代码所示:
public static void Rename(string myRootPath)
{
string[] myDirectories = Directory.GetDirectories(myRootPath, "*", SearchOption.AllDirectories);
string[] myDirectoriesModified = new string[myDirectories.Length];
string findFolderNamePattern = @"((?i)domain|.com(?-i))";
string replacement = "";
int i = 0;
foreach (var myDirectory in myDirectories)
{
myDirectoriesModified[i] = Regex.Replace(myDirectory, findFolderNamePattern, replacement);
i++;
}
}
- 3 回答
- 0 关注
- 233 浏览
添加回答
举报