C# 从值的末尾删除
我有以下代码:C# 从值的末尾删除,c#,C#,我有以下代码: if (BrowserName.ToUpper().Contains("FIREFOX")) privateModeParam = " -private-window"; string extraspeech = "\""; string both = BrowserName + extraspeech + privateModeParam; Process.Start(both, URLFromDB); 当它运行时,返回以下值: BrowserName = "c:\\
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"
我需要做的是,修剪\
中的\
字符串,因为它不会用反斜杠打开firefox
如果我只是这样做,我应该补充:
string both = BrowserName + privateModeParam;
返回的值为“c:\program files\mozilla firefox\firefox.exe \-私有窗口”
无法打开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(BrowserName, $"{privateModeParam} {URLFromDb}");
只需在arguments
参数中传递所有参数。然后也不需要将可执行文件用双引号括起来,因为它是fileName
参数中唯一的字符串。有关Process.Start()
参数的详细信息,请参阅。导致问题的是双引号(“
),而不是反斜杠。字符串中的此位置没有反斜杠,它仅由调试器显示,因为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(BrowserName, $"{privateModeParam} {URLFromDb}");
只需在arguments
参数中传递所有参数。然后也不需要将可执行文件用双引号括起来,因为它是fileName
参数中唯一的字符串。有关Process.Start()
参数的更多信息,请参阅
或
我可以解决你的问题
或
可以解决您的问题最简单的方法是使用子字符串:
MyString=MyString.Substring(0,MyString.Length-1) 最简单的方法是使用子字符串:
MyString=MyString.Substring(0,MyString.Length-1) 那么为什么要使用外部语言呢?只是不要使用它。我认为添加了额外的反斜杠,因为在分配和时,您正在将附加语音
添加到浏览器名
。你就不能不在这里加上extraspeech
吗?我想c:\\program files\\mozilla firefox\\firefox.exe开头缺少了一个双引号“
那么为什么要使用附加语音
?只是不要使用它。我认为添加了额外的反斜杠,因为在分配和时,您正在将附加语音
添加到浏览器名
。你就不能不在这里添加extraspeech
吗?我想在c:\\program files\\mozilla firefox\\firefox.exe“
的开头缺少一个双引号,对于这两个,它都返回“\”c:\\program files\\mozilla firefox\\firefox.exe\”-私有窗口的值而且它仍然无法打开firefox。对于这两种情况,它返回“\”c:\\program files\\mozilla firefox\\firefox.exe\”-private window”的值,并且仍然无法打开firefox