c# - 在参数中添加尾部斜杠 (/)

标签 c# protocols url-protocol

我正在我的计算机上注册一个自定义协议(protocol)处理程序,它调用这个应用程序:

        string prefix = "runapp://";

        // The name of this app for user messages
        string title = "RunApp URL Protocol Handler";

        // Verify the command line arguments
        if (args.Length == 0 || !args[0].StartsWith(prefix))
        { 
            MessageBox.Show("Syntax:\nrunapp://<key>", title); return; 
        }

        string key = args[0].Remove(0, "runapp://".Length);
        key.TrimEnd('/'); 

        string application = "";
        string parameters = "";
        string applicationDirectory = "";

        if (key.Contains("~"))
        {
            application = key.Split('~')[0];
            parameters = key.Split('~')[1];
        }
        else
        {
            application = key;
        }


        applicationDirectory = Directory.GetParent(application).FullName;

        ProcessStartInfo psInfo = new ProcessStartInfo();
        psInfo.Arguments = parameters;
        psInfo.FileName = application;

        MessageBox.Show(key + Environment.NewLine + Environment.NewLine + application + " " + parameters);
        // Start the application
        Process.Start(psInfo);

它所做的是检索 runapp://请求,根据 '~' 字符的位置将其分为两部分:应用程序和传递的参数。 (如果我通过了 PROGRA~1 或其他东西,这可能不是一个好主意,但考虑到我是唯一一个使用它的人,这不是问题),然后运行它。

然而,尾随的“/”总是被添加到字符串中:如果我通过了

runapp://E:\Emulation\GameBoy\visualboyadvance.exe~E:\Emulation\GameBoy\zelda4.gbc,会被解释为

runapp://E:\Emulation\GameBoy\visualboyadvance.exe E:\Emulation\GameBoy\zelda4.gbc/

为什么要这样做?为什么我不能去掉尾部的斜杠?我尝试了 TrimEnd('/')Remove(key.IndexOf('/'), 1)Replace("/", ""),但斜杠仍然存在。发生了什么事?

最佳答案

您需要分配 TrimEnd 的结果:

key = key.TrimEnd('/');

C# 中的字符串是 immutable ;因此,改变字符串的字符串方法会返回一个带有改变的新字符串,而不是改变原始字符串。

关于c# - 在参数中添加尾部斜杠 (/),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971904/

相关文章:

javascript - 通过 WebApi 将媒体批量上传到 Azure Blob 存储

swift - 如何在协议(protocol)扩展中设置委托(delegate)

swift - 类型转换与 swift 中的通用协议(protocol)冲突?

html - 浏览器在使用 scheme 时如何确定 href 中的 URL 是否是相对的?

protocols - 自定义 URL 协议(protocol)避免安全警告

c# - 集会 API : Adding Users to a Project

c# - 为什么 ApiAuthorization 在 .NET 5 中不起作用

c# - 这是我的 child 吗?

arrays - 如何使用关联类型和数组扩展协议(protocol)

javascript - 在 Windows 10 Edge 浏览器中使用 javascript 检测自定义 url 协议(protocol)处理程序