我在我的電腦,調用該應用程序上註冊自定義協議處理程序被添加:尾隨斜槓(/)在參數
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("/", "")
,但斜線停留。發生什麼事 ?
作爲一個側面評論,你有沒有考慮過使用?作爲應用程序/參數分隔符?這適合於通用的URL語法在哪裏?用於從參數中分離路徑。這將允許您將URL加載到Url類併爲您解析,包括不必像在這裏那樣進行手動字符串操作。 – 2012-08-15 15:38:51