C# 删除\";从路径转换为字符串
我正在注册表中查询服务的ImagePath。回报是: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了 简单的答案是,首
"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;
}