如何在命令行参数中处理路径中的空格

时间:2014-10-20 17:54:58

标签: c#

我的控制台应用程序中有空格问题。我的应用程序崩溃是因为不允许使用chararcters。

我的应用程序期望一个参数是文件系统的路径。所以它会像这样被调用

myProg.exe "D:\tmp\with whitespace\"

有了这些信息,我想在给定的文件夹中创建一个文件,但由于不允许使用char,这是不可能的。

String pdfName = "foobar.pdf
String datapath = args[0];
String targetJobFile = datapath + pdfName + ".txt";    

我可以在调试器中看到targetJobFile值是

 "D:\tmp\with whitespace\"foobar.pdf.txt

我收到了例外。 谢谢

3 个答案:

答案 0 :(得分:1)

您需要从参数中删除引号,因此在使用之前,请使用Trim

String realArg = args[0].Trim('"');

您已拥有\会给您的Path.Combine;但如果您不希望用户必须输入它,则使用Path.Combine是将路径分隔符添加到字符串中的好方法。

答案 1 :(得分:0)

为什么不检查是否存在"字符并在制作完整路径之前替换它们

        datapath = datapath.Replace("\"","");
        String targetJobFile = datapath + pdfName; 

答案 2 :(得分:0)

您可以前进一步并使用Path.GetInvalidPathChars(),它将返回路径名中不允许的所有无效字符,并将其从路径中删除,如下所示 -

modifiedPathName = new Regex(string.Format(“[{0}]”,Regex.Escape(new string(Path.GetInvalidPathChars()))))。Replace(PathName,replaceChar);