Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除\";从路径转换为字符串_C#_Replace_Tostring_Fileinfo - Fatal编程技术网

C# 删除\";从路径转换为字符串

C# 删除\";从路径转换为字符串,c#,replace,tostring,fileinfo,C#,Replace,Tostring,Fileinfo,我正在注册表中查询服务的ImagePath。回报是: "C:\Program Files\App\App.exe" 我在注册表函数中转换该ToString,结果是: "\"C:\\Program Files (x86)\\App\App.exe\"" 然后我需要创建一个FileInfo对象,但由于非法字符,该对象失败 如何将字符串剥离回“C:\Program Files(x86)\App\App.exe”,这样我就可以在我的FileInfo初始化中简单地声明@string了 简单的答案是,首

我正在注册表中查询服务的ImagePath。回报是:

"C:\Program Files\App\App.exe"
我在注册表函数中转换该ToString,结果是:

"\"C:\\Program Files (x86)\\App\App.exe\""
然后我需要创建一个
FileInfo
对象,但由于非法字符,该对象失败

如何将字符串剥离回“C:\Program Files(x86)\App\App.exe”,这样我就可以在我的
FileInfo
初始化中简单地声明@string了

简单的答案是,首先不要将其转换为字符串,但是这会改变广泛使用的my helper函数的行为

代码:

当我调用该方法并初始化DirectoryInfo时,它抛出一个异常“路径中的非法字符”。使用@或不使用@会导致相同的异常

DirectoryInfo exe = new DirectoryInfo(@exePath);

value=value.Substring(1,value.Length-2)

我使用以下方法从文件路径中删除不安全的字符

public static string RemoveIllegalFilenameCharactersFrom(string unsafeString)
    {
        const string illegalCharactersClass = @"[\&\<\>\:/|" + "\"" + @"\?\*]";

        string replaced = Regex.Replace(unsafeString, illegalCharactersClass, "");

        return replaced;
    }
public静态字符串removeAllegalFileNameCharacters(字符串未保存)
{
常量字符串illegalCharactersClass=@“[\&\\:/”+“\+@”\?\*];
替换的字符串=Regex.Replace(unsafeString,illegalCharactersClass,“”);
更换退货;
}

如果它真的像你说的那样生成不安全的字符串,除了通过删除不安全的字符来修改字符串之外,我看不到任何解决方法。

这已经得到解决,我只需要删除带有value.Trim(“\”)的引号。

x=x.Replace(“\”,”)
您在哪里看到该字符串?我猜您在调试器中看到了该字符串,并且它实际上没有所有的反斜杠。如果您将其打印到控制台上会发生什么情况?您需要发布显示问题的示例代码。value=value.Substring(1);我添加了我的代码。您可以使用
Path.GetInvalidPathChars
public static string RemoveIllegalFilenameCharactersFrom(string unsafeString)
    {
        const string illegalCharactersClass = @"[\&\<\>\:/|" + "\"" + @"\?\*]";

        string replaced = Regex.Replace(unsafeString, illegalCharactersClass, "");

        return replaced;
    }