当我尝试使用 Regex.Replace 它会抛出 System.ArgumentException

When i try to use Regex.Replace it throws out System.ArgumentException

我有这个安宁的代码:

string modz = Regex.Replace(mod, Directory.GetCurrentDirectory(), "");

mod 字符串基本上是这样的:

C:\Users\USER\Documents\SharpDevelop Projects\Project\Project\bin\Debug\BALZOO.jar

我希望它是 BALOO.jar 或只是 BALZOO

就像@GSerg 指出的那样,典型的目录路径不像是有效的正则表达式模式,即使是,也不太可能像您期望的那样进行替换。 您应该改用普通的 string.Replace

但是,有比字符串替换更好的方法。取决于你喜欢做什么:

  1. 只获取文件名:

    Path.GetFileName(mod) // BALOO.jar
    Path.GetFileNameWithoutExtension(mod) // BALOO
    
  2. 获取当前目录到mod的相对路径:

    MakeRelative(mod, Directory.GetCurrentDirectory())
    // ...
    public static string MakeRelative(string path, string relativeTo)
    {
        return new Uri(relativeTo).MakeRelativeUri(new Uri(path)).OriginalString;
    }