gpt4 book ai didi

c# - 从值的末尾删除\

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:46 28 4
gpt4 key购买 nike

我有以下代码:

if (BrowserName.ToUpper().Contains("FIREFOX"))
privateModeParam = " -private-window";
string extraspeech = "\"";
string both = BrowserName + extraspeech + privateModeParam;
Process.Start(both, URLFromDB);

当它运行时,它返回以下值:

BrowserName = "c:\\program files\\mozilla firefox\\firefox.exe"
both = "c:\\program files\\mozilla firefox\\firefox.exe\" -private-window"
privateModeParam = " -private-window"

我需要做的是,从 both 字符串中删除 \ 因为它不会打开带有反斜杠的 firefox。

如果我只是这样做,我应该添加:

string both = BrowserName + privateModeParam;

返回值是“c:\program files\mozilla firefox\firefox.exe\-private-window”什么打不开 Firefox

最佳答案

导致问题的原因是双引号 ("),而不是反斜杠。字符串中的这个位置没有反斜杠,调试器只会这样显示,因为 c#使用 \ 在字符串文字中转义类似 " 的内容。

所以您的问题似乎是您也忘记了在可执行文件之前添加extraspeech:

string both = extraspeech + BrowserName + extraspeech + privateModeParam;

或更好

string both = $"\"{BrowserName}\" {privateModeParam}"; // C#6
string both = string.Format("\"{0}\" {1}", BrowserName, privateModeParam); // pre C#6

更新:

但这里真正的问题似乎是您在 fileName 参数中传递了一个命令行参数,而通过 arguments 参数传递了一个命令行参数。

您实际上应该这样调用 Process.Start:

Process.Start(BrowserName, $"{privateModeParam} {URLFromDb}");

只需将所有参数传递到 arguments 参数中。然后也不需要将可执行文件用双引号引起来,因为它是 fileName 参数中唯一的字符串。参见 documentation有关 Process.Start() 参数的更多信息。

关于c# - 从值的末尾删除\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860687/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com