c# - 从转换为字符串的路径中删除\"

标签 c# replace tostring string-literals 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。

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

代码:

public static String getRegistryKeyValue(RegistryHive hiveType, String key, String value)
    {
        RegistryKey registryKey;
        if (Environment.Is64BitOperatingSystem == true)
            registryKey = RegistryKey.OpenBaseKey(hiveType, RegistryView.Registry64);
        else
            registryKey = RegistryKey.OpenBaseKey(hiveType, RegistryView.Registry32);

        RegistryKey keyToRead = registryKey.OpenSubKey(key);

        String data = "";
        try
        {
             data = keyToRead.GetValue(value).ToString();
        }
        catch (Exception)
        {
            logger.Error("Unable to get key: " + key + " for value: " + value);
        }
        logger.Info("Getting registry data for: " + key + " with value: " + value + " is: " + data);
        return data;
    }

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

DirectoryInfo exe = new DirectoryInfo(@exePath);

最佳答案

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

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

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

        return replaced;
    }

如果它确实像您所说的那样生成不安全的字符串,除了通过删除不安全字符来修改字符串之外,我看不到任何其他方法。

关于c# - 从转换为字符串的路径中删除\",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422240/

相关文章:

c# - ASP.NET 的编码性能增强

c# - 将自定义系统光标重置为正常

将字符串中的数字范围替换为单个数字

java - 在 Java 字符串中替换方法的更快替代方法?

C#:为什么 ShowDialog().ToString() 不返回预期的字符串?

ios - Swift 相当于 Java toString()

c# - 如何在基于 ASP.NET 的服务器中查询 SingleResult 对象?

c# - 我可以使用响应式(Reactive)扩展来对 Windows 服务的调用进行排队吗?

python - 将\n 替换为 <br/>

Java - Collections.sort() 问题