删除文件://前缀c#

时间:2016-11-15 16:17:50

标签: c#

我有以下内容:

string file = string.Concat(
                 System.IO.Path.GetDirectoryName(
                    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
                 ), 
              "bla.xml");

现在文件是:

file:\C:\test\Debugbla.xml

如何删除"文件:\"前缀?

由于

5 个答案:

答案 0 :(得分:8)

Uri类是操纵Uri的方法。虽然string.Replace是一个选项,但最好使用为特定情况明确设计的工具,这些工具还会在必要时处理转义规则。

string file = string.Concat(System.IO.Path.GetDirectoryName(
     System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "bla.xml");

file = new Uri(file).AbsolutePath; 

答案 1 :(得分:1)

改为使用Assembly.Location属性,返回正常的文件路径。

另外,请使用Path.Join()

答案 2 :(得分:0)

file = file.Replace(@"file:\", "");

您可以用空字符串替换它。

答案 3 :(得分:0)

您可以替换文件:\部分路径,如此。

string file = string.Concat(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "bla.xml");
file = file.Replace(@"file:\","");

答案 4 :(得分:0)

如果需要访问路径,则可以使用GetExecuting程序集并将其转换为Uri:

string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);

或使用位置:

string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;

如果只需要目录和入口点,则可以使用以下内容:

var dir = AppDomain.CurrentDomain.BaseDirectory;